aboutsummaryrefslogtreecommitdiffstats
path: root/src/data.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/data.c')
-rw-r--r--src/data.c15
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.
2449NUMBER may be an integer or a floating point number. */) 2449NUMBER 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
2468DEFUN ("string-to-number", Fstring_to_number, Sstring_to_number, 1, 2, 0, 2465DEFUN ("string-to-number", Fstring_to_number, Sstring_to_number, 1, 2, 0,