summaryrefslogtreecommitdiffstats
path: root/eval.c
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2015-09-30 21:38:52 -0700
committerKaz Kylheku <kaz@kylheku.com>2015-09-30 21:38:52 -0700
commit654267a6748d56757954f2c97e4178fdfc7c0626 (patch)
tree125c71744af0c44bf556f548fe64799bc1ed0082 /eval.c
parent48ca5bea20c35acc1b932c823bb2808db7a6a8cb (diff)
downloadtxr-654267a6748d56757954f2c97e4178fdfc7c0626.tar.gz
txr-654267a6748d56757954f2c97e4178fdfc7c0626.tar.bz2
txr-654267a6748d56757954f2c97e4178fdfc7c0626.zip
Fix incorrect "during expansion of ..." error reporting.
* eval.c (eval_intrinsic): Treat last_form_expanded just like last_form_evaled: save it, set to nil, and restore it. If it is not set to nil, then an evaluation error will be falsely reported as being during the expansion of that form.
Diffstat (limited to 'eval.c')
-rw-r--r--eval.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/eval.c b/eval.c
index bd0b40ea..210c7a97 100644
--- a/eval.c
+++ b/eval.c
@@ -953,8 +953,11 @@ val interp_fun(val env, val fun, struct args *args)
val eval_intrinsic(val form, val env)
{
val lfe_save = last_form_evaled;
- val form_ex = (last_form_evaled = nil, expand(form, nil));
+ val lfx_save = last_form_expanded;
+ val form_ex = (last_form_expanded = last_form_evaled = nil,
+ expand(form, nil));
val ret = eval(form_ex, default_bool_arg(env), form);
+ last_form_expanded = lfx_save;
last_form_evaled = lfe_save;
return ret;
}