aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorRichard M. Stallman1998-04-17 23:36:34 +0000
committerRichard M. Stallman1998-04-17 23:36:34 +0000
commit3c32996351d062b891c7cfbfe6a7ce5c63bd2fc8 (patch)
tree679e8aa0330e13bb96aebc21fac0bfbb12901875 /src
parent5ae07613263106995d4ec33b59901a2007c23f0f (diff)
downloademacs-3c32996351d062b891c7cfbfe6a7ce5c63bd2fc8.tar.gz
emacs-3c32996351d062b891c7cfbfe6a7ce5c63bd2fc8.zip
(read1): Compute NaN and infinities using 0.0 in a
variable, to cope with compilers that think they are smarter than us.
Diffstat (limited to 'src')
-rw-r--r--src/lread.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/lread.c b/src/lread.c
index 0d7238ddf35..3df769115f4 100644
--- a/src/lread.c
+++ b/src/lread.c
@@ -1916,6 +1916,7 @@ read1 (readcharfun, pch, first_in_list)
1916#ifdef LISP_FLOAT_TYPE 1916#ifdef LISP_FLOAT_TYPE
1917 if (isfloat_string (read_buffer)) 1917 if (isfloat_string (read_buffer))
1918 { 1918 {
1919 double zero = 0.0;
1919 double value = atof (read_buffer); 1920 double value = atof (read_buffer);
1920 if (read_buffer[0] == '-' && value == 0.0) 1921 if (read_buffer[0] == '-' && value == 0.0)
1921 value *= -1.0; 1922 value *= -1.0;
@@ -1924,11 +1925,11 @@ read1 (readcharfun, pch, first_in_list)
1924 if (p[-1] == 'F' || p[-1] == 'N') 1925 if (p[-1] == 'F' || p[-1] == 'N')
1925 { 1926 {
1926 if (p[-1] == 'N') 1927 if (p[-1] == 'N')
1927 value = 0.0 / 0.0; 1928 value = zero / zero;
1928 else if (read_buffer[0] == '-') 1929 else if (read_buffer[0] == '-')
1929 value = -1.0e999; 1930 value = - 1.0 / zero;
1930 else 1931 else
1931 value = 1.0e999; 1932 value = 1.0 / zero;
1932 } 1933 }
1933 return make_float (value); 1934 return make_float (value);
1934 } 1935 }