summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Monnier <monnier@iro.umontreal.ca>2013-02-25 11:05:49 -0500
committerStefan Monnier <monnier@iro.umontreal.ca>2013-02-25 11:05:49 -0500
commitb5071fc755c4f287c7befba1150d91a985762ebd (patch)
tree3fd1e218ab78050d4695036fb32e74d87b46dade
parent944c37effa068de90af84c37106461bca3076bea (diff)
downloademacs-b5071fc755c4f287c7befba1150d91a985762ebd.tar.gz
* src/callint.c (Fcall_interactively): Use the right lexical environment
for `interactive' specs. * src/eval.c (Feval): Accept a lexical environment. Fixes: debbugs:13811
-rw-r--r--src/ChangeLog6
-rw-r--r--src/callint.c4
-rw-r--r--src/eval.c2
3 files changed, 9 insertions, 3 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index 00d1f30dd46..4f2fb4c1d53 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,9 @@
+2013-02-25 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * callint.c (Fcall_interactively): Use the right lexical environment
+ for `interactive' specs (bug#13811).
+ * eval.c (Feval): Accept a lexical environment.
+
2013-02-25 Paul Eggert <eggert@cs.ucla.edu>
Simplify data_start configuration (Bug#13783).
diff --git a/src/callint.c b/src/callint.c
index 3e295a3b26b..b0d4bcdd011 100644
--- a/src/callint.c
+++ b/src/callint.c
@@ -342,8 +342,8 @@ invoke it. If KEYS is omitted or nil, the return value of
/* Compute the arg values using the user's expression. */
GCPRO2 (input, filter_specs);
specs = Feval (specs,
- CONSP (funval) && EQ (Qclosure, XCAR (funval))
- ? Qt : Qnil);
+ CONSP (funval) && EQ (Qclosure, XCAR (funval))
+ ? CAR_SAFE (XCDR (funval)) : Qnil);
UNGCPRO;
if (events != num_input_events || !NILP (record_flag))
{
diff --git a/src/eval.c b/src/eval.c
index 030bf14bcea..5db6f9d0bf3 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -1898,7 +1898,7 @@ If LEXICAL is t, evaluate using lexical scoping. */)
{
ptrdiff_t count = SPECPDL_INDEX ();
specbind (Qinternal_interpreter_environment,
- NILP (lexical) ? Qnil : Fcons (Qt, Qnil));
+ CONSP (lexical) || NILP (lexical) ? lexical : Fcons (Qt, Qnil));
return unbind_to (count, eval_sub (form));
}