diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2020-05-11 10:14:25 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2020-05-11 10:14:25 +0900 |
| commit | d64c4d64e6ae461fbca2e4cdb057ba14e254de8f (patch) | |
| tree | 4eebb6e4328d1b90a4c61d0a8d822fb185224675 | |
| parent | 846af371c083323a86e670755740be7d7698c9b5 (diff) | |
| download | mruby-d64c4d64e6ae461fbca2e4cdb057ba14e254de8f.tar.gz mruby-d64c4d64e6ae461fbca2e4cdb057ba14e254de8f.zip | |
Make `off_t` handling simpler; #4872 #4939
The newer `clang` warns implicit float conversions.
| -rw-r--r-- | mrbgems/mruby-io/src/file.c | 26 | ||||
| -rw-r--r-- | mrbgems/mruby-io/src/io.c | 17 |
2 files changed, 4 insertions, 39 deletions
diff --git a/mrbgems/mruby-io/src/file.c b/mrbgems/mruby-io/src/file.c index e166d82fa..004eb0a5f 100644 --- a/mrbgems/mruby-io/src/file.c +++ b/mrbgems/mruby-io/src/file.c @@ -458,7 +458,7 @@ mrb_file_size(mrb_state *mrb, mrb_value self) } static int -mrb_ftruncate(int fd, int64_t length) +mrb_ftruncate(int fd, mrb_int length) { #ifndef _WIN32 return ftruncate(fd, (off_t)length); @@ -491,32 +491,12 @@ static mrb_value mrb_file_truncate(mrb_state *mrb, mrb_value self) { int fd; - int64_t length; + mrb_int length; mrb_value lenv; fd = mrb_io_fileno(mrb, self); mrb_get_args(mrb, "o", &lenv); - switch (mrb_type(lenv)) { -#ifndef MRB_WITHOUT_FLOAT - case MRB_TT_FLOAT: - { - mrb_float lenf = mrb_float(lenv); - if (lenf > INT64_MAX) { - mrb_raise(mrb, E_ARGUMENT_ERROR, "length too large"); - } - length = (int64_t)lenf; - } - break; -#endif - case MRB_TT_FIXNUM: - default: - { - mrb_int leni = mrb_int(mrb, lenv); - length = (int64_t)leni; - } - break; - } - + length = mrb_int(mrb, lenv); if (mrb_ftruncate(fd, length) != 0) { mrb_raise(mrb, E_IO_ERROR, "ftruncate failed"); } diff --git a/mrbgems/mruby-io/src/io.c b/mrbgems/mruby-io/src/io.c index c0d2a51d7..3bf3d28be 100644 --- a/mrbgems/mruby-io/src/io.c +++ b/mrbgems/mruby-io/src/io.c @@ -1404,22 +1404,7 @@ mrb_io_sync(mrb_state *mrb, mrb_value self) static off_t value2off(mrb_state *mrb, mrb_value offv) { - switch (mrb_type(offv)) { -#ifndef MRB_WITHOUT_FLOAT - case MRB_TT_FLOAT: - { - mrb_float tmp = mrb_float(offv); - if (tmp < INT64_MIN || tmp > INT64_MAX) { - /* fall through to use convert by `mrb_int()` (and raise error if out of range) */ - } else { - return (off_t)tmp; - } - } - /* fall through */ -#endif /* MRB_WITHOUT_FLOAT */ - default: - return (off_t)mrb_int(mrb, offv); - } + return (off_t)mrb_int(mrb, offv); } /* |
