aboutsummaryrefslogtreecommitdiffstats
path: root/src/eval.c
diff options
context:
space:
mode:
authorJoakim Verona2012-08-19 02:44:11 +0200
committerJoakim Verona2012-08-19 02:44:11 +0200
commit5436d1df5e2ba0b4d4f72b03a1cd09b20403654b (patch)
tree532faa27319b3bb199d414dc85e63a58246d30b0 /src/eval.c
parentd02344322b0d2fea8dd9ad9dd0a6c70e058f967b (diff)
parente757f1c6f393cf82057dbee0a4325b07f0fd55c4 (diff)
downloademacs-5436d1df5e2ba0b4d4f72b03a1cd09b20403654b.tar.gz
emacs-5436d1df5e2ba0b4d4f72b03a1cd09b20403654b.zip
upstream
Diffstat (limited to 'src/eval.c')
-rw-r--r--src/eval.c18
1 files changed, 15 insertions, 3 deletions
diff --git a/src/eval.c b/src/eval.c
index b531f790cc5..771cd7b160a 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -2217,7 +2217,19 @@ eval_sub (Lisp_Object form)
2217 goto retry; 2217 goto retry;
2218 } 2218 }
2219 if (EQ (funcar, Qmacro)) 2219 if (EQ (funcar, Qmacro))
2220 val = eval_sub (apply1 (Fcdr (fun), original_args)); 2220 {
2221 ptrdiff_t count = SPECPDL_INDEX ();
2222 extern Lisp_Object Qlexical_binding;
2223 Lisp_Object exp;
2224 /* Bind lexical-binding during expansion of the macro, so the
2225 macro can know reliably if the code it outputs will be
2226 interpreted using lexical-binding or not. */
2227 specbind (Qlexical_binding,
2228 NILP (Vinternal_interpreter_environment) ? Qnil : Qt);
2229 exp = apply1 (Fcdr (fun), original_args);
2230 unbind_to (count, Qnil);
2231 val = eval_sub (exp);
2232 }
2221 else if (EQ (funcar, Qlambda) 2233 else if (EQ (funcar, Qlambda)
2222 || EQ (funcar, Qclosure)) 2234 || EQ (funcar, Qclosure))
2223 val = apply_lambda (fun, original_args); 2235 val = apply_lambda (fun, original_args);
@@ -3157,12 +3169,12 @@ specbind (Lisp_Object symbol, Lisp_Object value)
3157 if (!NILP (Flocal_variable_p (symbol, Qnil))) 3169 if (!NILP (Flocal_variable_p (symbol, Qnil)))
3158 { 3170 {
3159 eassert (sym->redirect != SYMBOL_LOCALIZED 3171 eassert (sym->redirect != SYMBOL_LOCALIZED
3160 || (BLV_FOUND (SYMBOL_BLV (sym)) 3172 || (blv_found (SYMBOL_BLV (sym))
3161 && EQ (cur_buf, SYMBOL_BLV (sym)->where))); 3173 && EQ (cur_buf, SYMBOL_BLV (sym)->where)));
3162 where = cur_buf; 3174 where = cur_buf;
3163 } 3175 }
3164 else if (sym->redirect == SYMBOL_LOCALIZED 3176 else if (sym->redirect == SYMBOL_LOCALIZED
3165 && BLV_FOUND (SYMBOL_BLV (sym))) 3177 && blv_found (SYMBOL_BLV (sym)))
3166 where = SYMBOL_BLV (sym)->where; 3178 where = SYMBOL_BLV (sym)->where;
3167 else 3179 else
3168 where = Qnil; 3180 where = Qnil;