[Top][All Lists]
[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.
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] /srv/bzr/emacs/emacs-24 r110797: * lisp/emacs-lisp/gv.el (gv-define-simple-setter): Don't evaluate `val',
Stefan Monnier <=