diff options
author | Mikael Djurfeldt <djurfeldt@nada.kth.se> | 1998-05-02 16:26:21 +0000 |
---|---|---|
committer | Mikael Djurfeldt <djurfeldt@nada.kth.se> | 1998-05-02 16:26:21 +0000 |
commit | 680ed4a802c872a31720d0503a941e96c93c9495 (patch) | |
tree | c8d64538b3fff5cae60aeb608b6abc78d9cde482 /libguile/eval.h | |
parent | c153090d62b57d818efe35e452d36c59152ab346 (diff) | |
download | guile-680ed4a802c872a31720d0503a941e96c93c9495.tar.gz |
* 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.
Diffstat (limited to 'libguile/eval.h')
-rw-r--r-- | libguile/eval.h | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/libguile/eval.h b/libguile/eval.h index 9f218c07e..094afa319 100644 --- a/libguile/eval.h +++ b/libguile/eval.h @@ -134,8 +134,8 @@ extern SCM * scm_lookupcar SCM_P ((SCM vloc, SCM genv)); extern SCM scm_unmemocar SCM_P ((SCM form, SCM env)); extern SCM scm_unmemocopy SCM_P ((SCM form, SCM env)); extern SCM scm_eval_car SCM_P ((SCM pair, SCM env)); -extern SCM scm_eval_args SCM_P ((SCM i, SCM env)); -extern SCM scm_deval_args SCM_P ((SCM l, SCM env, SCM *lloc)); +extern SCM scm_eval_args SCM_P ((SCM i, SCM env, SCM proc)); +extern SCM scm_deval_args SCM_P ((SCM l, SCM env, SCM proc, SCM *lloc)); extern SCM scm_m_quote SCM_P ((SCM xorig, SCM env)); extern SCM scm_m_begin SCM_P ((SCM xorig, SCM env)); extern SCM scm_m_if SCM_P ((SCM xorig, SCM env)); |