core: Fix quasisyntax reading.
authorJan Nieuwenhuizen <janneke@gnu.org>
Sun, 30 Oct 2016 22:30:22 +0000 (23:30 +0100)
committerJan Nieuwenhuizen <janneke@gnu.org>
Mon, 12 Dec 2016 19:33:49 +0000 (20:33 +0100)
* mes.c (readword): Avoid unspecified behaviour in comma list.

mes.c

diff --git a/mes.c b/mes.c
index b47d02be523d02a35642e4a8be4ba7610351304f..47feb1f7be3eb21a149aa23de8d1158899eac82b 100644 (file)
--- a/mes.c
+++ b/mes.c
@@ -972,12 +972,10 @@ readword (int c, scm *w, scm *a)
                                                            &scm_nil));}
     return cons (lookup (symbol_unsyntax.string, a), cons (readword (getchar (), w, a), &scm_nil));
   }
-  if (c == '#'
-     && (peekchar () == '\''
-         || peekchar () == '`')
-      && w == &scm_nil) {return cons (lookup (cons (make_char ('#'), cons (make_char (getchar ()), &scm_nil)), a),
-                          cons (readword (getchar (), w, a),
-                                &scm_nil));}
+  if (c == '#' && (peekchar () == '\'' || peekchar () == '`') && w == &scm_nil) {
+    c = getchar ();
+    return cons (lookup (cons (make_char ('#'), cons (make_char (c), &scm_nil)), a),
+                 cons (readword (getchar (), w, a), &scm_nil));}
   if (c == ';') {readcomment (c); return readword ('\n', w, a);}
   if (c == '#' && peekchar () == 'x') {getchar (); return read_hex ();}
   if (c == '#' && peekchar () == '\\') {getchar (); return read_character ();}