diff options
Diffstat (limited to 'mrbgems/mruby-pack')
| -rw-r--r-- | mrbgems/mruby-pack/src/pack.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/mrbgems/mruby-pack/src/pack.c b/mrbgems/mruby-pack/src/pack.c index 4c43a2cf6..489ad3718 100644 --- a/mrbgems/mruby-pack/src/pack.c +++ b/mrbgems/mruby-pack/src/pack.c @@ -193,7 +193,9 @@ pack_l(mrb_state *mrb, mrb_value o, mrb_value str, mrb_int sidx, unsigned int fl static int unpack_l(mrb_state *mrb, const unsigned char *src, int srclen, mrb_value ary, unsigned int flags) { +#ifndef MRB_INT64 char msg[60]; +#endif uint32_t ul; mrb_int n; @@ -210,16 +212,20 @@ unpack_l(mrb_state *mrb, const unsigned char *src, int srclen, mrb_value ary, un } if (flags & PACK_FLAG_SIGNED) { int32_t sl = ul; +#ifndef MRB_INT64 if (!FIXABLE(sl)) { snprintf(msg, sizeof(msg), "cannot unpack to Fixnum: %ld", (long)sl); mrb_raise(mrb, E_RANGE_ERROR, msg); } +#endif n = sl; } else { +#ifndef MRB_INT64 if (!POSFIXABLE(ul)) { snprintf(msg, sizeof(msg), "cannot unpack to Fixnum: %lu", (unsigned long)ul); mrb_raise(mrb, E_RANGE_ERROR, msg); } +#endif n = ul; } mrb_ary_push(mrb, ary, mrb_fixnum_value(n)); @@ -591,7 +597,7 @@ unpack_a(mrb_state *mrb, const void *src, int slen, mrb_value ary, long count, u if (flags & PACK_FLAG_Z) { /* "Z" */ if ((cp = (const char *)memchr(sptr, '\0', slen)) != NULL) { - copylen = cp - sptr; + copylen = (int)(cp - sptr); if (count == -1) { slen = copylen + 1; } @@ -859,8 +865,8 @@ has_tmpl(const struct tmpl *tmpl) static void read_tmpl(mrb_state *mrb, struct tmpl *tmpl, int *dirp, int *typep, int *sizep, int *countp, unsigned int *flagsp) { - mrb_int ch, t, tlen; - int dir, type, size = 0; + mrb_int t, tlen; + int ch, dir, type, size = 0; int count = 1; unsigned int flags = 0; const char *tptr; |
