[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#24270: Seeming bug in `setf'
From: |
Michael Heerdegen |
Subject: |
bug#24270: Seeming bug in `setf' |
Date: |
Sat, 20 Aug 2016 16:03:34 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux) |
Hello Rafael,
> (emacs-version) ; GNU Emacs 24.3.1 (x86_64-pc-linux-gnu, GTK+ Version
> 3.10.7) of 2014-03-07 on lamiak, modified by Debian
>
> (setq z ())
> (getf z 'indic) ; nil
> (setf (getf z 'indic) 6) ; (indic 6) SHOULD BE JUST 6
> (getf z 'indic) ; 6 okay
Thanks for reporting. Yes, there was such a bug, but your Emacs version
is very old...and the bug has been fixed in the meantime (three years
ago) in
c46c57b, Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/emacs-lisp/cl-extra.el (cl-getf): Return the proper value in
the setter.
Fixes: debbugs:14387
modified lisp/emacs-lisp/cl-extra.el
@@ -597,8 +597,11 @@ cl-getf
(macroexp-let2 nil d def
(funcall do `(cl-getf ,getter ,k ,d)
(lambda (v)
- (funcall setter
- `(cl--set-getf ,getter ,k ,v))))))))))
+ (macroexp-let2 nil val v
+ `(progn
+ ,(funcall setter
+ `(cl--set-getf ,getter ,k ,val))
+ ,val))))))))))
(setplist '--cl-getf-symbol-- plist)
(or (get '--cl-getf-symbol-- tag)
;; Originally we called cl-get here,
modified lisp/emacs-lisp/cl-loaddefs.el
Regards,
Michael.