emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] /srv/bzr/emacs/emacs-24 r110797: * lisp/emacs-lisp/gv.el (


From: Stefan Monnier
Subject: [Emacs-diffs] /srv/bzr/emacs/emacs-24 r110797: * lisp/emacs-lisp/gv.el (gv-define-simple-setter): Don't evaluate `val'
Date: Tue, 06 Nov 2012 22:39:33 -0500
User-agent: Bazaar (2.5.0)

------------------------------------------------------------
revno: 110797
fixes bug: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=12813
committer: Stefan Monnier <address@hidden>
branch nick: emacs-24
timestamp: Tue 2012-11-06 22:39:33 -0500
message:
  * lisp/emacs-lisp/gv.el (gv-define-simple-setter): Don't evaluate `val'
  twice when `fix-return' is set.
modified:
  lisp/ChangeLog
  lisp/emacs-lisp/gv.el
=== modified file 'lisp/ChangeLog'
--- a/lisp/ChangeLog    2012-11-07 03:14:27 +0000
+++ b/lisp/ChangeLog    2012-11-07 03:39:33 +0000
@@ -1,5 +1,8 @@
 2012-11-07  Stefan Monnier  <address@hidden>
 
+       * emacs-lisp/gv.el (gv-define-simple-setter): Don't evaluate `val'
+       twice when `fix-return' is set (bug#12813).
+
        * emacs-lisp/cl.el (defsetf): Pass the third arg to
        gv-define-simple-setter (bug#12812).
 

=== modified file 'lisp/emacs-lisp/gv.el'
--- a/lisp/emacs-lisp/gv.el     2012-11-06 01:36:44 +0000
+++ b/lisp/emacs-lisp/gv.el     2012-11-07 03:39:33 +0000
@@ -213,9 +213,11 @@
 instead the assignment is turned into (prog1 VAL (SETTER ARGS... VAL))
 so as to preserve the semantics of `setf'."
   (declare (debug (sexp (&or symbolp lambda-expr) &optional sexp)))
-  (let ((set-call `(cons ',setter (append args (list val)))))
   `(gv-define-setter ,name (val &rest args)
-     ,(if fix-return `(list 'prog1 val ,set-call) set-call))))
+     ,(if fix-return
+          `(macroexp-let2 nil v val
+             (cons ',setter (append args (list v))))
+        `(cons ',setter (append args (list val))))))
 
 ;;; Typical operations on generalized variables.
 


reply via email to

[Prev in Thread] Current Thread [Next in Thread]