diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2015-09-30 21:38:52 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2015-09-30 21:38:52 -0700 |
commit | 654267a6748d56757954f2c97e4178fdfc7c0626 (patch) | |
tree | 125c71744af0c44bf556f548fe64799bc1ed0082 | |
parent | 48ca5bea20c35acc1b932c823bb2808db7a6a8cb (diff) | |
download | txr-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.c | 5 |
1 files changed, 4 insertions, 1 deletions
@@ -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; } |