(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.
This commit is contained in:
Kim F. Storm 2003-02-13 12:44:57 +00:00
parent c794a94d9a
commit 37cd423857
2 changed files with 21 additions and 2 deletions

View file

@ -1,5 +1,10 @@
2003-02-13 Kim F. Storm <storm@cua.dk>
* 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.

View file

@ -1697,9 +1697,13 @@ read_escape (readcharfun, stringp, byterep)
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 @@ read1 (readcharfun, pch, first_in_list)
case '?':
{
int discard;
int nextc;
c = READCHAR;
if (c < 0)
@ -2257,6 +2262,15 @@ read1 (readcharfun, pch, first_in_list)
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);
}