diff --git a/src/CHANGELOG b/src/CHANGELOG index 19f5e3e44..14d7b19e9 100644 --- a/src/CHANGELOG +++ b/src/CHANGELOG @@ -25,6 +25,8 @@ ECL 0.9f - All strings in a pathname must be valid C strings, with a null terminating character and no fill pointer. + - "+nan" is no longer parsed as a number. + * Visible changes: - Multithreaded ECL now in Windows, either with Microsoft VC++ @@ -47,6 +49,13 @@ ECL 0.9f - When closing a composite stream, all references to its elements are now erased. + - Backquote forms are now translated into lists containing the macros + EXT:QUASIQUOTE, EXT:UNQUOTE, EXT:UNQUOTE-SPLICE and EXT:UNQUOTE-NSPLICE. + At evaluation/compilation time, the macroexpander for QUASIQUOTE transforms + the tree into the appropiate lisp expression. Otherwise, the print + representation is preserved: + (format nil '`(foo ,@a)) => "`(foo ,@a)" + * ANSI Compatibility: - DEFSETF forms are enclosed in a block with the name of the accessor. diff --git a/src/c/read.d b/src/c/read.d index 46e06a20a..8fb988371 100644 --- a/src/c/read.d +++ b/src/c/read.d @@ -355,10 +355,16 @@ parse_number(const char *s, cl_index end, cl_index *ep, int radix) } else { is_float = 1; } - } else if ((digitp(c, radix) < 0) && is_exponent_marker(c)) { - exp_marker_loc = i; - is_float = 1; - break; + } else if (digitp(c, radix) < 0) { + if (is_exponent_marker(c)) { + exp_marker_loc = i; + is_float = 1; + break; + } + if ((c < '0' || c > '9') && c != '+' && c != '-') { + /* A non valid character found */ + return OBJNULL; + } } } if (!is_float) {