aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndreas Schwab2016-03-09 19:40:00 +0100
committerAndreas Schwab2016-03-09 19:45:40 +0100
commit711ca362e7f8ca7c4f664dc2fe60bc5fa4e4f4fe (patch)
treefb06c21131638649f0530f1700c2a91905973095
parent1b9d6163b023aaefd15d38ea28e968a113202402 (diff)
downloademacs-711ca362e7f8ca7c4f664dc2fe60bc5fa4e4f4fe.tar.gz
emacs-711ca362e7f8ca7c4f664dc2fe60bc5fa4e4f4fe.zip
Properly handle lambda as read function (bug 22961)
* src/lread.c (readchar): Be more strict about checking for string in cons for read_vector. (unreadchar): Likewise.
-rw-r--r--src/lread.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/lread.c b/src/lread.c
index 25e3ff01d47..828c76ce49d 100644
--- a/src/lread.c
+++ b/src/lread.c
@@ -264,7 +264,7 @@ readchar (Lisp_Object readcharfun, bool *multibyte)
264 return c; 264 return c;
265 } 265 }
266 266
267 if (CONSP (readcharfun)) 267 if (CONSP (readcharfun) && STRINGP (XCAR (readcharfun)))
268 { 268 {
269 /* This is the case that read_vector is reading from a unibyte 269 /* This is the case that read_vector is reading from a unibyte
270 string that contains a byte sequence previously skipped 270 string that contains a byte sequence previously skipped
@@ -406,7 +406,7 @@ unreadchar (Lisp_Object readcharfun, int c)
406 read_from_string_index_byte 406 read_from_string_index_byte
407 = string_char_to_byte (readcharfun, read_from_string_index); 407 = string_char_to_byte (readcharfun, read_from_string_index);
408 } 408 }
409 else if (CONSP (readcharfun)) 409 else if (CONSP (readcharfun) && STRINGP (XCAR (readcharfun)))
410 { 410 {
411 unread_char = c; 411 unread_char = c;
412 } 412 }