From 4567ed787c01a8a8510a5c4ad6ca24e199ffe21c Mon Sep 17 00:00:00 2001 From: Dirk Herrmann Date: Fri, 19 Jan 2001 17:16:52 +0000 Subject: [PATCH] * Applied Martin Grabmueller's fix of case's handling of 'else. --- THANKS | 1 + libguile/ChangeLog | 6 ++++++ libguile/eval.c | 3 ++- 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/THANKS b/THANKS index dbabae485..2845273c9 100644 --- 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 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 + + * 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 * 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); -- 2.20.1