diff options
author | naruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2017-03-13 07:03:32 +0000 |
---|---|---|
committer | naruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2017-03-13 07:03:32 +0000 |
commit | af41ce23eaacb4697216ad8bb5975fc97a06147b (patch) | |
tree | 84e6a428eed8d037cf821510d3a7a39c4640cdfd /bignum.c | |
parent | b85d2e8a5a992af04069ce186e7a720a1f101f5c (diff) |
merge revision(s) 57269,57277:
bignum.c: fix rb_cstr_parse_inum endp
* bignum.c (rb_cstr_parse_inum): stores the address of the first
invalid character when str is too big or contains an underscore.
bignum.c: unnecessary check
* bignum.c (rb_cstr_parse_inum): remove unnecessary check.
successive sign is rejected by conv_digit.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_4@57953 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'bignum.c')
-rw-r--r-- | bignum.c | 4 |
1 files changed, 1 insertions, 3 deletions
@@ -4057,9 +4057,6 @@ rb_cstr_parse_inum(const char *str, ssize_t len, char **endp, int base) sign = 0; } ASSERT_LEN(); - if (str[0] == '+' || str[0] == '-') { - goto bad; - } } if (base <= 0) { if (str[0] == '0' && len > 1) { @@ -4172,6 +4169,7 @@ rb_cstr_parse_inum(const char *str, ssize_t len, char **endp, int base) digits_start = str; if (!str2big_scan_digits(s, str, base, badcheck, &num_digits, &len)) goto bad; + if (endp) *endp = (char *)(str + len); digits_end = digits_start + len; if (POW2_P(base)) { |