diff options
| author | dearblue <[email protected]> | 2021-01-29 22:23:22 +0900 |
|---|---|---|
| committer | dearblue <[email protected]> | 2021-01-29 22:33:03 +0900 |
| commit | b500e8295001849cf96e88d7f0a86d517299ff7d (patch) | |
| tree | 5aca16026c30dbef3a7693bcca300fe242c0811b /mrbgems/mruby-pack | |
| parent | 9c36499e311a62f92127829d96f7eb638b49001f (diff) | |
| download | mruby-b500e8295001849cf96e88d7f0a86d517299ff7d.tar.gz mruby-b500e8295001849cf96e88d7f0a86d517299ff7d.zip | |
Remove unnecessary range confirmation
This is a correction based on the review by @matz.
https://github.com/mruby/mruby/pull/5306#pullrequestreview-578378401
Diffstat (limited to 'mrbgems/mruby-pack')
| -rw-r--r-- | mrbgems/mruby-pack/src/pack.c | 33 |
1 files changed, 5 insertions, 28 deletions
diff --git a/mrbgems/mruby-pack/src/pack.c b/mrbgems/mruby-pack/src/pack.c index 58c2a3be7..b0da7b06b 100644 --- a/mrbgems/mruby-pack/src/pack.c +++ b/mrbgems/mruby-pack/src/pack.c @@ -216,26 +216,6 @@ u32tostr(char *buf, size_t len, uint32_t n) snprintf(buf, len, "%" PRIu32, n); #endif /* MRB_NO_STDIO */ } - -static void -i32tostr(char *buf, size_t len, int32_t n) -{ -#ifdef MRB_NO_STDIO - if (len < 1) { - return; - } - - if (n < 0) { - *buf ++ = '-'; - len --; - n = -n; - } - - u32tostr(buf, len, (uint32_t)n); -#else - snprintf(buf, len, "%" PRId32, n); -#endif /* MRB_NO_STDIO */ -} #endif /* MRB_INT64 */ static int @@ -259,14 +239,7 @@ unpack_l(mrb_state *mrb, const unsigned char *src, int srclen, mrb_value ary, un ul += (uint32_t)src[3]; } if (flags & PACK_FLAG_SIGNED) { - int32_t sl = ul; -#ifndef MRB_INT64 - if (INT_OVERFLOW_P(sl)) { - i32tostr(msg, sizeof(msg), sl); - mrb_raisef(mrb, E_RANGE_ERROR, "cannot unpack to Integer: %s", msg); - } -#endif - n = sl; + n = (int32_t)ul; } else { #ifndef MRB_INT64 if (UINT_OVERFLOW_P(ul)) { @@ -340,6 +313,7 @@ u64tostr(char *buf, size_t len, uint64_t n) #endif /* MRB_NO_STDIO */ } +#ifndef MRB_INT64 static void i64tostr(char *buf, size_t len, int64_t n) { @@ -359,6 +333,7 @@ i64tostr(char *buf, size_t len, int64_t n) snprintf(buf, len, "%" PRId64, n); #endif /* MRB_NO_STDIO */ } +#endif /* MRB_INT64 */ static int unpack_q(mrb_state *mrb, const unsigned char *src, int srclen, mrb_value ary, unsigned int flags) @@ -382,10 +357,12 @@ unpack_q(mrb_state *mrb, const unsigned char *src, int srclen, mrb_value ary, un } if (flags & PACK_FLAG_SIGNED) { int64_t sll = ull; +#ifndef MRB_INT64 if (INT_OVERFLOW_P(sll)) { i64tostr(msg, sizeof(msg), sll); mrb_raisef(mrb, E_RANGE_ERROR, "cannot unpack to Integer: %s", msg); } +#endif n = (mrb_int)sll; } else { if (UINT_OVERFLOW_P(ull)) { |
