]> git.eshelyaron.com Git - emacs.git/commitdiff
* lisp/emacs-lisp/nadvice.el: Properly test names when adding advice.
authorStefan Monnier <monnier@iro.umontreal.ca>
Mon, 15 Apr 2013 15:06:51 +0000 (11:06 -0400)
committerStefan Monnier <monnier@iro.umontreal.ca>
Mon, 15 Apr 2013 15:06:51 +0000 (11:06 -0400)
(advice--member-p): New arg `name'.
(advice--add-function, advice-member-p): Use it.

Fixes: debbugs:14202
lisp/ChangeLog
lisp/emacs-lisp/nadvice.el

index d367ddb36f8f8d8ef8db786ebc61f8763cfe5348..2966af7e0bc3a01bdc8c342b966bec0a6b898db2 100644 (file)
@@ -1,3 +1,9 @@
+2013-04-15  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * emacs-lisp/nadvice.el: Properly test names when adding advice.
+       (advice--member-p): New arg `name'.
+       (advice--add-function, advice-member-p): Use it (bug#14202).
+
 2013-04-15  Filipp Gunbin  <fgunbin@fastmail.fm>
 
        Reformulate java imenu-generic-expression.
@@ -7,7 +13,7 @@
        (cc-imenu-java-type-spec-regexp, cc-imenu-java-comment-regexp)
        (cc-imenu-java-method-arg-regexp): New defconsts.
        (cc-imenu-java-build-type-args-regex): New defun.
-       (cc-imenu-java-generic-expression): Fixed, to remove "ambiguous"
+       (cc-imenu-java-generic-expression): Fix, to remove "ambiguous"
        handling of spaces in the regexp.
 
 2013-03-15  Agustín Martín Domingo  <agustin.martin@hispalinux.es>
index 0632c7d2fc06b16fe3142eac4023ec513a6a2356..db8a0753466d3d59613617d2bfd15bafafadcf7b 100644 (file)
@@ -158,11 +158,12 @@ WHERE is a symbol to select an entry in `advice--where-alist'."
     (advice--make-1 (nth 1 desc) (nth 2 desc)
                     function main props)))
 
-(defun advice--member-p (function definition)
+(defun advice--member-p (function name definition)
   (let ((found nil))
     (while (and (not found) (advice--p definition))
       (if (or (equal function (advice--car definition))
-              (equal function (cdr (assq 'name (advice--props definition)))))
+              (when name
+                (equal name (cdr (assq 'name (advice--props definition))))))
           (setq found t)
         (setq definition (advice--cdr definition))))
     found))
@@ -255,7 +256,8 @@ is also interactive.  There are 3 cases:
 
 ;;;###autoload
 (defun advice--add-function (where ref function props)
-  (unless (advice--member-p function (gv-deref ref))
+  (unless (advice--member-p function (cdr (assq 'name props))
+                            (gv-deref ref))
     (setf (gv-deref ref)
           (advice--make where function (gv-deref ref) props))))
 
@@ -396,7 +398,7 @@ of the piece of advice."
   "Return non-nil if ADVICE has been added to FUNCTION-NAME.
 Instead of ADVICE being the actual function, it can also be the `name'
 of the piece of advice."
-  (advice--member-p advice
+  (advice--member-p advice advice
                     (or (get function-name 'advice--pending)
                        (advice--strip-macro
                         (if (fboundp function-name)