diff options
Diffstat (limited to 'src/data.c')
| -rw-r--r-- | src/data.c | 15 |
1 files changed, 6 insertions, 9 deletions
diff --git a/src/data.c b/src/data.c index cd4b14a9f9d..bd757cfdad1 100644 --- a/src/data.c +++ b/src/data.c | |||
| @@ -2449,20 +2449,17 @@ Uses a minus sign if negative. | |||
| 2449 | NUMBER may be an integer or a floating point number. */) | 2449 | NUMBER may be an integer or a floating point number. */) |
| 2450 | (Lisp_Object number) | 2450 | (Lisp_Object number) |
| 2451 | { | 2451 | { |
| 2452 | char buffer[VALBITS]; | 2452 | char buffer[max (FLOAT_TO_STRING_BUFSIZE, INT_BUFSIZE_BOUND (EMACS_INT))]; |
| 2453 | int len; | ||
| 2453 | 2454 | ||
| 2454 | CHECK_NUMBER_OR_FLOAT (number); | 2455 | CHECK_NUMBER_OR_FLOAT (number); |
| 2455 | 2456 | ||
| 2456 | if (FLOATP (number)) | 2457 | if (FLOATP (number)) |
| 2457 | { | 2458 | len = float_to_string (buffer, XFLOAT_DATA (number)); |
| 2458 | char pigbuf[FLOAT_TO_STRING_BUFSIZE]; | 2459 | else |
| 2459 | 2460 | len = sprintf (buffer, "%"pI"d", XINT (number)); | |
| 2460 | float_to_string (pigbuf, XFLOAT_DATA (number)); | ||
| 2461 | return build_string (pigbuf); | ||
| 2462 | } | ||
| 2463 | 2461 | ||
| 2464 | sprintf (buffer, "%"pI"d", XINT (number)); | 2462 | return make_unibyte_string (buffer, len); |
| 2465 | return build_string (buffer); | ||
| 2466 | } | 2463 | } |
| 2467 | 2464 | ||
| 2468 | DEFUN ("string-to-number", Fstring_to_number, Sstring_to_number, 1, 2, 0, | 2465 | DEFUN ("string-to-number", Fstring_to_number, Sstring_to_number, 1, 2, 0, |