aboutsummaryrefslogtreecommitdiffstats
path: root/src/data.c
diff options
context:
space:
mode:
authorPaul Eggert2023-07-13 14:26:29 -0700
committerPaul Eggert2023-07-13 14:43:03 -0700
commit0cd519971d199836ba0a6e9f0e36af9b9accaf0d (patch)
treeadf49dde9f863b4e1ce00a9c37dfd1a761a98a7a /src/data.c
parentb94e7e6334718061879c32025941f00913078230 (diff)
downloademacs-0cd519971d199836ba0a6e9f0e36af9b9accaf0d.tar.gz
emacs-0cd519971d199836ba0a6e9f0e36af9b9accaf0d.zip
Port NaN, infinity handling better to VAX
Nowadays .elc files routinely contain tokens like 1.0e+INF and 0.0e+NaN that do not work on antiques like the VAX that lack IEEE fp. Port Emacs to these platforms, by treating infinities as extreme values and NaNs as strings that trap if used numerically. * src/lread.c (INFINITY): Default to HUGE_VAL if non-IEEE. (not_a_number) [!IEEE_FLOATING_POINT]: New static array. (syms_of_lread) [!IEEE_FLOATING_POINT]: Initialize it. (read0): Report invalid syntax for +0.0e+NaN on platforms that lack NaNs. (string_to_number): On non-IEEE platforms, return HUGE_VAL for infinity and a string for NaN. All callers changed.
Diffstat (limited to 'src/data.c')
-rw-r--r--src/data.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/data.c b/src/data.c
index 6de8e0cf1a1..5a31462d8ca 100644
--- a/src/data.c
+++ b/src/data.c
@@ -3033,7 +3033,8 @@ If the base used is not 10, STRING is always parsed as an integer. */)
3033 p++; 3033 p++;
3034 3034
3035 Lisp_Object val = string_to_number (p, b, 0); 3035 Lisp_Object val = string_to_number (p, b, 0);
3036 return NILP (val) ? make_fixnum (0) : val; 3036 return ((IEEE_FLOATING_POINT ? NILP (val) : !NUMBERP (val))
3037 ? make_fixnum (0) : val);
3037} 3038}
3038 3039
3039enum arithop 3040enum arithop