diff --git a/src/org/armedbear/lisp/Stream.java b/src/org/armedbear/lisp/Stream.java index c641ede..de7cf1a 100644 --- a/src/org/armedbear/lisp/Stream.java +++ b/src/org/armedbear/lisp/Stream.java @@ -543,17 +543,16 @@ public class Stream extends StructureObject { } public LispObject readSymbol() { - final Readtable rt = - (Readtable) Symbol.CURRENT_READTABLE.symbolValue(LispThread.currentThread()); - StringBuilder sb = new StringBuilder(); - _readToken(sb, rt); - return new Symbol(sb.toString()); + return readSymbol((Readtable) Symbol.CURRENT_READTABLE + .symbolValue(LispThread.currentThread())); } public LispObject readSymbol(Readtable rt) { StringBuilder sb = new StringBuilder(); - _readToken(sb, rt); - return new Symbol(sb.toString()); + BitSet flags = _readToken(sb, rt); + + return new Symbol(rt.getReadtableCase() == Keyword.INVERT ? + invert(sb.toString(), flags) : sb.toString()); } public LispObject readStructure(ReadtableAccessor rta) {