• Paul Eggert's avatar
    Make the Lisp reader and string-to-float more consistent. · 8b9587d7
    Paul Eggert authored
    * data.c (atof): Remove decl; no longer used or needed.
    (Fstring_to_number): Use new string_to_float function, to be
    consistent with how the Lisp reader treats infinities and NaNs.
    Do not assume that floating-point numbers represent EMACS_INT
    without losing information; this is not true on most 64-bit hosts.
    Avoid double-rounding errors, by insisting on integers when
    parsing non-base-10 numbers, as the documentation specifies.
    Report integer overflow instead of silently converting to
    integers.
    * lisp.h (string_to_float): New decl, replacing ...
    (isfloat_string): Remove.
    * lread.c (read1): Do not accept +. and -. as integers; this
    appears to have been a coding error.  Similarly, do not accept
    strings like +-1e0 as floating point numbers.  Do not report
    overflow for some integer overflows and not others; instead,
    report them all.  Break out the floating-point parsing into a new
    function string_to_float, so that Fstring_to_number parses
    floating point numbers consistently with the Lisp reader.
    (string_to_float): New function, replacing isfloat_string.
    This function checks for valid syntax and produces the resulting
    Lisp float number too.
    8b9587d7
ChangeLog 96.4 KB