diff options
| author | Richard M. Stallman | 1998-04-17 23:36:34 +0000 |
|---|---|---|
| committer | Richard M. Stallman | 1998-04-17 23:36:34 +0000 |
| commit | 3c32996351d062b891c7cfbfe6a7ce5c63bd2fc8 (patch) | |
| tree | 679e8aa0330e13bb96aebc21fac0bfbb12901875 /src | |
| parent | 5ae07613263106995d4ec33b59901a2007c23f0f (diff) | |
| download | emacs-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.c | 7 |
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 | } |