Mercurial > emacs
diff src/data.c @ 106406:b793459cea92
Fix `string-to-number' to deal consistently with integers and floats.
* lread.c (isfloat_string): New argument ignore_trailing to accept all
trailing characters, not just whitespace.
(read1): Pass new arg 0 to keep old behavior.
* data.c (Fstring_to_number): Pass 1 to isfloat_string to ignore
trailing chars, as it is already done for integers. Doc fixes.
* lisp.h (isfloat_string): Add new arg to declaration of isfloat_string.
| author | Juanma Barranquero <lekktu@gmail.com> |
|---|---|
| date | Fri, 04 Dec 2009 16:16:26 +0000 |
| parents | f2cea199b0c4 |
| children | 1d1d5d9bd884 |
line wrap: on
line diff
--- a/src/data.c Fri Dec 04 10:51:37 2009 +0000 +++ b/src/data.c Fri Dec 04 16:16:26 2009 +0000 @@ -1770,7 +1770,7 @@ CHECK_SYMBOL (variable); sym = indirect_variable (XSYMBOL (variable)); XSETSYMBOL (variable, sym); - + valcontents = sym->value; if (BUFFER_LOCAL_VALUEP (valcontents)) { @@ -2353,11 +2353,11 @@ DEFUN ("string-to-number", Fstring_to_number, Sstring_to_number, 1, 2, 0, doc: /* Parse STRING as a decimal number and return the number. This parses both integers and floating point numbers. -It ignores leading spaces and tabs. +It ignores leading spaces and tabs, and all trailing chars. If BASE, interpret STRING as a number in that base. If BASE isn't present, base 10 is used. BASE must be between 2 and 16 (inclusive). -If the base used is not 10, floating point is not recognized. */) +If the base used is not 10, STRING is always parsed as integer. */) (string, base) register Lisp_Object string, base; { @@ -2392,7 +2392,7 @@ else if (*p == '+') p++; - if (isfloat_string (p) && b == 10) + if (isfloat_string (p, 1) && b == 10) val = make_float (sign * atof (p)); else {
