]> git.eshelyaron.com Git - emacs.git/commitdiff
* src/callint.c (Fcall_interactively): Use the right lexical environment
authorStefan Monnier <monnier@iro.umontreal.ca>
Mon, 25 Feb 2013 16:05:49 +0000 (11:05 -0500)
committerStefan Monnier <monnier@iro.umontreal.ca>
Mon, 25 Feb 2013 16:05:49 +0000 (11:05 -0500)
for `interactive' specs.
* src/eval.c (Feval): Accept a lexical environment.

Fixes: debbugs:13811
src/ChangeLog
src/callint.c
src/eval.c

index 00d1f30dd4688ecbd3d0e07f9b9b65d1685862e9..4f2fb4c1d5357fb7b592b922d199845a8894f38b 100644 (file)
@@ -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).
index 3e295a3b26b268ba66b484ce99019bbca6d6021d..b0d4bcdd011563e1906d171db77b1cf683a0daa6 100644 (file)
@@ -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))
        {
index 030bf14bcea7c10d3c92e893142c2dacbc1b415c..5db6f9d0bf3c1a5f2636093e27f91d1ed969dfdb 100644 (file)
@@ -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));
 }