[armedbear-cvs] r12693 - trunk/abcl/src/org/armedbear/lisp

Erik Huelsmann ehuelsmann at common-lisp.net
Sun May 16 20:56:33 UTC 2010


Author: ehuelsmann
Date: Sun May 16 16:56:32 2010
New Revision: 12693

Log:
Fix reader dispatch macro functions defined in Lisp,
trying to return no values (ie: (VALUES)).

Modified:
   trunk/abcl/src/org/armedbear/lisp/Stream.java

Modified: trunk/abcl/src/org/armedbear/lisp/Stream.java
==============================================================================
--- trunk/abcl/src/org/armedbear/lisp/Stream.java	(original)
+++ trunk/abcl/src/org/armedbear/lisp/Stream.java	Sun May 16 16:56:32 2010
@@ -735,20 +735,21 @@
         final LispThread thread = LispThread.currentThread();
         final Readtable rt = rta.rt(thread);
         LispObject fun = rt.getDispatchMacroCharacter(dispChar, c);
-        if (fun instanceof DispatchMacroFunction)
-            return ((DispatchMacroFunction)fun).execute(this, c, numArg);
         if (fun != NIL) {
-            LispObject result =
-                thread.execute(fun, this, LispCharacter.getInstance(c),
-                               (numArg < 0) ? NIL : Fixnum.getInstance(numArg));
-            LispObject[] values = thread._values;
-            if (values != null && values.length == 0)
-                result = null;
+            LispObject result;
+
             thread._values = null;
-            return result;
+            if (fun instanceof DispatchMacroFunction)
+                return ((DispatchMacroFunction)fun).execute(this, c, numArg);
+            else
+                return
+                    thread.execute(fun, this, LispCharacter.getInstance(c),
+                       (numArg < 0) ? NIL : Fixnum.getInstance(numArg));
         }
+
         if (Symbol.READ_SUPPRESS.symbolValue(thread) != NIL)
             return null;
+
         return error(new ReaderError("No dispatch function defined for #\\" + c,
                                      this));
     }




More information about the armedbear-cvs mailing list