summaryrefslogtreecommitdiffstats
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
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.
-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;
}