diff options
author | shyouhei <shyouhei@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-11-15 07:34:01 +0000 |
---|---|---|
committer | shyouhei <shyouhei@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-11-15 07:34:01 +0000 |
commit | 86d1fc88637223edb248df7e5d327e8d1a427afb (patch) | |
tree | d7e7eaa47d04854f04305c2bb0b0e2205f94b2a5 /marshal.c | |
parent | a42784000e102df0909e8a307c0b0b8ba2938304 (diff) |
suppress integer overflow warnings
* util.c: annotate as NO_SANITIZE
* bignum.c: avoid (size_t)--
* marshal.c: ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65739 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'marshal.c')
-rw-r--r-- | marshal.c | 5 |
1 files changed, 3 insertions, 2 deletions
@@ -817,6 +817,7 @@ w_object(VALUE obj, struct dump_arg *arg, int limit) char sign = BIGNUM_SIGN(obj) ? '+' : '-'; size_t len = BIGNUM_LEN(obj); size_t slen; + size_t j; BDIGIT *d = BIGNUM_DIGITS(obj); slen = SHORTLEN(len); @@ -826,7 +827,7 @@ w_object(VALUE obj, struct dump_arg *arg, int limit) w_byte(sign, arg); w_long((long)slen, arg); - while (len--) { + for (j = 0; j < len; j++) { #if SIZEOF_BDIGIT > SIZEOF_SHORT BDIGIT num = *d; int i; @@ -834,7 +835,7 @@ w_object(VALUE obj, struct dump_arg *arg, int limit) for (i=0; i<SIZEOF_BDIGIT; i+=SIZEOF_SHORT) { w_short(num & SHORTMASK, arg); num = SHORTDN(num); - if (len == 0 && num == 0) break; + if (j == len - 1 && num == 0) break; } #else w_short(*d, arg); |