# HG changeset patch # User Kim F. Storm # Date 1045140297 0 # Node ID ef3e82270e934a5713bbf6823ca27f5e72646df6 # Parent cd49dc222af434fcdace2a7a6b75a4aced48a1c8 (read_escape): Interpret \s as a SPACE character, except for \s-X in a character constant which still is the super modifier. (read1): Signal an `invalid read syntax' error if a character constant is immediately followed by a digit or symbol character. diff -r cd49dc222af4 -r ef3e82270e93 src/ChangeLog --- a/src/ChangeLog Thu Feb 13 11:57:42 2003 +0000 +++ b/src/ChangeLog Thu Feb 13 12:44:57 2003 +0000 @@ -1,5 +1,10 @@ 2003-02-13 Kim F. Storm + * lread.c (read_escape): Interpret \s as a SPACE character, except + for \s-X in a character constant which still is the super modifier. + (read1): Signal an `invalid read syntax' error if a character + constant is immediately followed by a digit or symbol character. + * search.c (Fmatch_data): Doc fix. Explicitly state that match-data is undefined if last search failed. diff -r cd49dc222af4 -r ef3e82270e93 src/lread.c --- a/src/lread.c Thu Feb 13 11:57:42 2003 +0000 +++ b/src/lread.c Thu Feb 13 12:44:57 2003 +0000 @@ -1697,9 +1697,13 @@ return c | alt_modifier; case 's': + if (stringp) + return ' '; c = READCHAR; - if (c != '-') - error ("Invalid escape character syntax"); + if (c != '-') { + UNREAD (c); + return ' '; + } c = READCHAR; if (c == '\\') c = read_escape (readcharfun, 0, byterep); @@ -2247,6 +2251,7 @@ case '?': { int discard; + int nextc; c = READCHAR; if (c < 0) @@ -2257,6 +2262,15 @@ else if (BASE_LEADING_CODE_P (c)) c = read_multibyte (c, readcharfun); + nextc = READCHAR; + UNREAD (nextc); + if (nextc > 040 + && !(nextc == '?' + || nextc == '\"' || nextc == '\'' || nextc == ';' + || nextc == '(' || nextc == ')' + || nextc == '[' || nextc == ']' || nextc == '#')) + Fsignal (Qinvalid_read_syntax, Fcons (make_string ("?", 1), Qnil)); + return make_number (c); }