* Applied Martin Grabmueller's fix of case's handling of 'else.
authorDirk Herrmann <dirk@dirk-herrmanns-seiten.de>
Fri, 19 Jan 2001 17:16:52 +0000 (17:16 +0000)
committerDirk Herrmann <dirk@dirk-herrmanns-seiten.de>
Fri, 19 Jan 2001 17:16:52 +0000 (17:16 +0000)
THANKS
libguile/ChangeLog
libguile/eval.c

diff --git a/THANKS b/THANKS
index dbabae4..2845273 100644 (file)
--- a/THANKS
+++ b/THANKS
@@ -18,6 +18,7 @@ For fixes or providing information which led to a fix:
      George Caswell
       Chris Cramer
       I. N. Golubev
+     Martin Grabmueller
        Brad Knotwell
    Matthias Köppe
       Bruce Korb
index 572ae53..4e1bce7 100644 (file)
@@ -1,3 +1,9 @@
+2001-01-19  Dirk Herrmann  <D.Herrmann@tu-bs.de>
+
+       * eval.c (scm_m_case):  The 'else' clause of a 'case' statement
+       now has to be the last clause, as required by R5RS.  Thanks to
+       Martin Grabmueller for the patch.
+
 2001-01-18  Gary Houston  <ghouston@arglist.com>
 
        * ioext.c: further simplify scm_read_string_x_partial by defining
index b7cf5be..feb7808 100644 (file)
@@ -595,7 +595,8 @@ scm_m_case (SCM xorig, SCM env)
       proc = SCM_CAR (x);
       SCM_ASSYNT (scm_ilength (proc) >= 2, xorig, scm_s_clauses, s_case);
       SCM_ASSYNT (scm_ilength (SCM_CAR (proc)) >= 0
-                 || SCM_EQ_P (scm_sym_else, SCM_CAR (proc)),
+                 || (SCM_EQ_P (scm_sym_else, SCM_CAR (proc)) 
+                     && SCM_NULLP (SCM_CDR (x))),
                  xorig, scm_s_clauses, s_case);
     }
   return scm_cons (SCM_IM_CASE, cdrx);