From: Tom Tromey Date: Wed, 8 Aug 2018 23:33:24 +0000 (-0600) Subject: Handle leading "+" when converting string to bignum X-Git-Tag: emacs-27.0.90~4598^2~6 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=5ebf062ebe0ec0536efd4f1fb4f37d75f892664b;p=emacs.git Handle leading "+" when converting string to bignum * src/lread.c (string_to_number): Skip leading "+" when calling make_bignum_str. --- diff --git a/src/lread.c b/src/lread.c index bcb695c3dae..3a2d9c8a6d3 100644 --- a/src/lread.c +++ b/src/lread.c @@ -3792,21 +3792,16 @@ string_to_number (char const *string, int base, int flags) range, use its value, preferably as a fixnum. */ if (leading_digit >= 0 && ! float_syntax) { - if (state & INTOVERFLOW) - { - /* Unfortunately there's no simple and accurate way to convert - non-base-10 numbers that are out of C-language range. */ - if (base != 10) - flags = 0; - } - else if (n <= (negative ? -MOST_NEGATIVE_FIXNUM : MOST_POSITIVE_FIXNUM)) + if ((state & INTOVERFLOW) == 0 + && n <= (negative ? -MOST_NEGATIVE_FIXNUM : MOST_POSITIVE_FIXNUM)) { EMACS_INT signed_n = n; return make_fixnum (negative ? -signed_n : signed_n); } - else - value = n; + /* Skip a leading "+". */ + if (signedp && !negative) + ++string; return make_bignum_str (string, base); }