summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Schwab <schwab@linux-m68k.org>2011-07-17 10:00:53 +0200
committerAndreas Schwab <schwab@linux-m68k.org>2011-07-17 10:00:53 +0200
commit52968808d6b81ff29d6a0abb116807881b59078b (patch)
tree2baf6893c502dbdacc3ba7de5592ab10214229a8
parenta762e96652b2e8766522f3c0894ec3b825032067 (diff)
downloademacs-52968808d6b81ff29d6a0abb116807881b59078b.tar.gz
* src/lread.c (read1): Read `#:' as empty uninterned symbol if no
symbol character follows.
-rw-r--r--src/ChangeLog5
-rw-r--r--src/lread.c15
2 files changed, 19 insertions, 1 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index d12558e5d6d..10f4186c31c 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,8 @@
+2011-07-17 Andreas Schwab <schwab@linux-m68k.org>
+
+ * lread.c (read1): Read `#:' as empty uninterned symbol if no
+ symbol character follows.
+
2011-07-17 Paul Eggert <eggert@cs.ucla.edu>
* fileio.c (Fcopy_file): Pacify gcc re fchown. (Bug#9002)
diff --git a/src/lread.c b/src/lread.c
index 7dd566dc173..bb0edd898da 100644
--- a/src/lread.c
+++ b/src/lread.c
@@ -2660,7 +2660,18 @@ read1 (register Lisp_Object readcharfun, int *pch, int first_in_list)
{
uninterned_symbol = 1;
c = READCHAR;
- goto default_label;
+ if (!(c > 040
+ && c != 0x8a0
+ && (c >= 0200
+ || !(strchr ("\"';()[]#`,", c)))))
+ {
+ /* No symbol character follows, this is the empty
+ symbol. */
+ if (c >= 0)
+ UNREAD (c);
+ return Fmake_symbol (build_string (""));
+ }
+ goto read_symbol;
}
/* Reader forms that can reuse previously read objects. */
if (c >= '0' && c <= '9')
@@ -3002,6 +3013,8 @@ read1 (register Lisp_Object readcharfun, int *pch, int first_in_list)
if (c <= 040) goto retry;
if (c == 0x8a0) /* NBSP */
goto retry;
+
+ read_symbol:
{
char *p = read_buffer;
int quoted = 0;