diff options
author | Paulo Cesar Pereira de Andrade <pcpa@mandriva.com.br> | 2008-03-11 21:48:58 -0300 |
---|---|---|
committer | Paulo Cesar Pereira de Andrade <pcpa@mandriva.com.br> | 2008-07-02 19:05:34 -0300 |
commit | cb30367f10f2e38065d336d331afdc50900de76d (patch) | |
tree | 9b78cc1191b3e14cdbe325d47185d42e82c93788 /lisp/read.c | |
parent | 953664369cc66ba17c7b9c1939fd9d7f6c6137ad (diff) |
Generic lisp interface bug fixes including:
o Allow calling disassemble in all function types
o Don't limit amount of bytes to generate a hash table
o Allow "unreadable" symbol names to be keywords
Diffstat (limited to 'lisp/read.c')
-rw-r--r-- | lisp/read.c | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/lisp/read.c b/lisp/read.c index 283f473..9c70b64 100644 --- a/lisp/read.c +++ b/lisp/read.c @@ -1127,6 +1127,13 @@ LispReadObject(int unintern, read_info *info) collon = 1; string[length++] = ch; symbol = string + 1; + ch = LispGet(); + if (ch == '|') { + quote = ch; + unreadable = 1; + } + else if (ch != EOF) + LispUnget(ch); } else if (ch) { if (islower(ch)) @@ -1220,12 +1227,6 @@ LispReadObject(int unintern, read_info *info) else if (quote == '"') object = LSTRING(string, length); - else if (quote == '|' || (unreadable && !collon)) { - /* Set unreadable field, this atom needs quoting to be read back */ - object = ATOM(string); - object->data.atom->unreadable = 1; - } - else if (collon) { /* Package specified in object name */ symbol[-1] = '\0'; @@ -1236,6 +1237,12 @@ LispReadObject(int unintern, read_info *info) read__stream, read__line); } + else if (quote == '|' || (unreadable && !collon)) { + /* Set unreadable field, this atom needs quoting to be read back */ + object = ATOM(string); + object->data.atom->unreadable = 1; + } + /* Check some common symbols */ else if (length == 1 && string[0] == 'T') /* The T */ |