summaryrefslogtreecommitdiffhomepage
path: root/mrbgems/mruby-pack
diff options
context:
space:
mode:
authordearblue <[email protected]>2021-01-29 22:23:22 +0900
committerdearblue <[email protected]>2021-01-29 22:33:03 +0900
commitb500e8295001849cf96e88d7f0a86d517299ff7d (patch)
tree5aca16026c30dbef3a7693bcca300fe242c0811b /mrbgems/mruby-pack
parent9c36499e311a62f92127829d96f7eb638b49001f (diff)
downloadmruby-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.c33
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)) {