summaryrefslogtreecommitdiff
path: root/lisp/emacs-lisp
diff options
context:
space:
mode:
Diffstat (limited to 'lisp/emacs-lisp')
-rw-r--r--lisp/emacs-lisp/cl-extra.el8
1 files changed, 7 insertions, 1 deletions
diff --git a/lisp/emacs-lisp/cl-extra.el b/lisp/emacs-lisp/cl-extra.el
index 2402d799108..46801c6cc36 100644
--- a/lisp/emacs-lisp/cl-extra.el
+++ b/lisp/emacs-lisp/cl-extra.el
@@ -624,7 +624,13 @@ argument VECP, this copies vectors as well as conses."
PROPLIST is a list of the sort returned by `symbol-plist'."
(setplist '--cl-getf-symbol-- plist)
(or (get '--cl-getf-symbol-- tag)
- (and def (get* '--cl-getf-symbol-- tag def))))
+ ;; Originally we called get* here,
+ ;; but that fails, because get* has a compiler macro
+ ;; definition that uses getf!
+ (when def
+ (while (and plist (not (eq (car plist) tag)))
+ (setq plist (cdr (cdr plist))))
+ (if plist (car (cdr plist)) def))))
(defun cl-set-getf (plist tag val)
(let ((p plist))