summaryrefslogtreecommitdiff
path: root/libguile
diff options
context:
space:
mode:
Diffstat (limited to 'libguile')
-rw-r--r--libguile/ChangeLog6
-rw-r--r--libguile/eval.c3
2 files changed, 8 insertions, 1 deletions
diff --git a/libguile/ChangeLog b/libguile/ChangeLog
index 572ae53ce..4e1bce790 100644
--- a/libguile/ChangeLog
+++ b/libguile/ChangeLog
@@ -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
diff --git a/libguile/eval.c b/libguile/eval.c
index b7cf5be11..feb7808c5 100644
--- a/libguile/eval.c
+++ b/libguile/eval.c
@@ -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);