summaryrefslogtreecommitdiff
path: root/bignum.c
diff options
context:
space:
mode:
authornaruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2017-03-13 07:03:32 +0000
committernaruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2017-03-13 07:03:32 +0000
commitaf41ce23eaacb4697216ad8bb5975fc97a06147b (patch)
tree84e6a428eed8d037cf821510d3a7a39c4640cdfd /bignum.c
parentb85d2e8a5a992af04069ce186e7a720a1f101f5c (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.c4
1 files changed, 1 insertions, 3 deletions
diff --git a/bignum.c b/bignum.c
index a5983c4ba9..4b50737bb6 100644
--- a/bignum.c
+++ b/bignum.c
@@ -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)) {