]> git.eshelyaron.com Git - emacs.git/commitdiff
(eval-last-sexp): Avoid introducing any
authorAndreas Schwab <schwab@suse.de>
Fri, 6 Jul 2007 17:30:06 +0000 (17:30 +0000)
committerAndreas Schwab <schwab@suse.de>
Fri, 6 Jul 2007 17:30:06 +0000 (17:30 +0000)
dynamic bindings around the evaluation of the expression.

lisp/ChangeLog
lisp/emacs-lisp/lisp-mode.el

index c6e7ef04cee59b121f027908ea77140a0b2925ca..adfef8ab2901a09815ae921b4a8b3d77db0ad793 100644 (file)
@@ -1,3 +1,9 @@
+2007-07-06  Andreas Schwab  <schwab@suse.de>
+
+       * emacs-lisp/lisp-mode.el (eval-last-sexp): Avoid introducing any
+       dynamic bindings around the evaluation of the expression.
+       Reported by Jay Belanger <jay.p.belanger@gmail.com>.
+
 2007-07-03  Dan Nicolaescu  <dann@ics.uci.edu>
 
        * progmodes/gud.el (auto-mode-alist): Match more valid gdb init
index 164756dfdc3593d10be52662796e23005bb13739..73379a816d78eeababd02418c8a3001647bdb216 100644 (file)
@@ -628,13 +628,13 @@ this command arranges for all errors to enter the debugger."
   (interactive "P")
   (if (null eval-expression-debug-on-error)
       (eval-last-sexp-1 eval-last-sexp-arg-internal)
-    (let ((old-value eval-last-sexp-fake-value) new-value value)
-      (let ((debug-on-error old-value))
-       (setq value (eval-last-sexp-1 eval-last-sexp-arg-internal))
-       (setq new-value debug-on-error))
-      (unless (eq old-value new-value)
-       (setq debug-on-error new-value))
-      value)))
+    (let ((value
+          (let ((debug-on-error eval-last-sexp-fake-value))
+            (cons (eval-last-sexp-1 eval-last-sexp-arg-internal)
+                  debug-on-error))))
+      (unless (eq (cdr value) eval-last-sexp-fake-value)
+       (setq debug-on-error (cdr value)))
+      (car value))))
 
 (defun eval-defun-1 (form)
   "Treat some expressions specially.