* eval.c (scm_trampoline_0, scm_trampoline_1, scm_trampoline_2):

Fixed formals tests for closures.  (Thanks to Kevin Ryde.)
This commit is contained in:
Mikael Djurfeldt 2003-02-10 12:39:11 +00:00
commit 4b612c5be7
2 changed files with 13 additions and 6 deletions

View file

@ -1,3 +1,8 @@
2003-02-10 Mikael Djurfeldt <djurfeldt@nada.kth.se>
* eval.c (scm_trampoline_0, scm_trampoline_1, scm_trampoline_2):
Fixed formals tests for closures. (Thanks to Kevin Ryde.)
2003-02-05 Mikael Djurfeldt <djurfeldt@nada.kth.se>
* debug.c (scm_procedure_source): Handle all objects for which

View file

@ -3848,7 +3848,7 @@ scm_trampoline_0 (SCM proc)
case scm_tcs_closures:
{
SCM formals = SCM_CLOSURE_FORMALS (proc);
if (SCM_NULLP (formals) || SCM_SYMBOLP (formals))
if (SCM_NULLP (formals) || !SCM_CONSP (formals))
return scm_i_call_closure_0;
else
return 0;
@ -3961,8 +3961,8 @@ scm_trampoline_1 (SCM proc)
case scm_tcs_closures:
{
SCM formals = SCM_CLOSURE_FORMALS (proc);
if ((SCM_CONSP (formals) && SCM_NULLP (SCM_CDR (formals)))
|| SCM_SYMBOLP (formals))
if (!SCM_NULLP (formals)
&& (!SCM_CONSP (formals) || !SCM_CONSP (SCM_CDR (formals))))
return call_closure_1;
else
return 0;
@ -4037,9 +4037,11 @@ scm_trampoline_2 (SCM proc)
case scm_tcs_closures:
{
SCM formals = SCM_CLOSURE_FORMALS (proc);
if (!SCM_CONSP (formals)
|| (SCM_CONSP (SCM_CDR (formals))
&& SCM_NULLP (SCM_CDDR (formals))))
if (!SCM_NULLP (formals)
&& (!SCM_CONSP (formals)
|| (!SCM_NULLP (SCM_CDR (formals))
&& (!SCM_CONSP (SCM_CDR (formals))
|| !SCM_CONSP (SCM_CDDR (formals))))))
return call_closure_2;
else
return 0;