* eval.c (SCM_CEVAL): Do more thorough argument checking. This
authorMikael Djurfeldt <djurfeldt@nada.kth.se>
Sat, 2 May 1998 16:26:21 +0000 (16:26 +0000)
committerMikael Djurfeldt <djurfeldt@nada.kth.se>
Sat, 2 May 1998 16:26:21 +0000 (16:26 +0000)
commit680ed4a802c872a31720d0503a941e96c93c9495
treec8d64538b3fff5cae60aeb608b6abc78d9cde482
parentc153090d62b57d818efe35e452d36c59152ab346
* eval.c (SCM_CEVAL): Do more thorough argument checking.  This
change makes the evaluator safer at the cost of evaluation speed.
It handles the case when the user has added a non-immediate
improper end of the application form, e.g., `(+ 0 . x)'.
(Earlier only cases like `(+ 0 . 0)' were handled.)  I've tried to
minimize the extra cost as much as possible.  The new code is
enclosed in #ifdef CAUTIOUS regions.  NOTE: This also fixes the
problem with structs planted directly in the code (e.g. by a
macro).  This no longer causes segmentation fault.  (Thanks to
Eric Hanchrow.)

* eval.c, eval.h (scm_eval_args, scm_deval_args): Take one extra
arg `proc' in order to be able to throw errors; New argument
checking code.
THANKS
libguile/ChangeLog
libguile/eval.c
libguile/eval.h