From b70c39303991f5a4455025444fac376d48fe6968 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Tue, 24 Mar 2026 13:57:45 +0900 Subject: [PATCH] mruby-io: use mrb_int for mrb_hal_io_readlink() return type int64_t was unnecessary; readlink(2) returns ssize_t (bounded by PATH_MAX), and the Windows HAL just raises NotImplementedError. Co-authored-by: Claude --- mrbgems/hal-posix-io/src/io_hal.c | 7 ++----- mrbgems/hal-win-io/src/io_hal.c | 2 +- mrbgems/mruby-io/include/io_hal.h | 2 +- mrbgems/mruby-io/src/file.c | 2 +- 4 files changed, 5 insertions(+), 8 deletions(-) diff --git a/mrbgems/hal-posix-io/src/io_hal.c b/mrbgems/hal-posix-io/src/io_hal.c index 2283fdd7e..3d5a17fd4 100644 --- a/mrbgems/hal-posix-io/src/io_hal.c +++ b/mrbgems/hal-posix-io/src/io_hal.c @@ -200,14 +200,11 @@ mrb_hal_io_symlink(mrb_state *mrb, const char *target, const char *linkpath) return symlink(target, linkpath); } -int64_t +mrb_int mrb_hal_io_readlink(mrb_state *mrb, const char *path, char *buf, size_t bufsize) { - ssize_t rc; (void)mrb; - - rc = readlink(path, buf, bufsize); - return (int64_t)rc; + return (mrb_int)readlink(path, buf, bufsize); } char* diff --git a/mrbgems/hal-win-io/src/io_hal.c b/mrbgems/hal-win-io/src/io_hal.c index f3429b62a..8cc199e32 100644 --- a/mrbgems/hal-win-io/src/io_hal.c +++ b/mrbgems/hal-win-io/src/io_hal.c @@ -207,7 +207,7 @@ mrb_hal_io_symlink(mrb_state *mrb, const char *target, const char *linkpath) return -1; /* not reached */ } -int64_t +mrb_int mrb_hal_io_readlink(mrb_state *mrb, const char *path, char *buf, size_t bufsize) { (void)path; diff --git a/mrbgems/mruby-io/include/io_hal.h b/mrbgems/mruby-io/include/io_hal.h index 53bde4dea..cb196850f 100644 --- a/mrbgems/mruby-io/include/io_hal.h +++ b/mrbgems/mruby-io/include/io_hal.h @@ -189,7 +189,7 @@ int mrb_hal_io_symlink(mrb_state *mrb, const char *target, const char *linkpath) * @param bufsize Buffer size * @return Number of bytes placed in buf, -1 on error (sets errno) */ -int64_t mrb_hal_io_readlink(mrb_state *mrb, const char *path, char *buf, size_t bufsize); +mrb_int mrb_hal_io_readlink(mrb_state *mrb, const char *path, char *buf, size_t bufsize); /** * Resolve pathname to absolute path diff --git a/mrbgems/mruby-io/src/file.c b/mrbgems/mruby-io/src/file.c index 096578b21..65bafc36a 100644 --- a/mrbgems/mruby-io/src/file.c +++ b/mrbgems/mruby-io/src/file.c @@ -900,7 +900,7 @@ mrb_file_s_readlink(mrb_state *mrb, mrb_value klass) /* Use mrb_temp_alloc for exception safety - GC will clean up on exception */ char *buf = (char*)mrb_temp_alloc(mrb, PATH_MAX); - int64_t rc = mrb_hal_io_readlink(mrb, tmp, buf, PATH_MAX); + mrb_int rc = mrb_hal_io_readlink(mrb, tmp, buf, PATH_MAX); mrb_locale_free(tmp); if (rc == -1) { mrb_sys_fail(mrb, path);