From: Stefan Monnier Date: Mon, 15 Apr 2013 15:06:51 +0000 (-0400) Subject: * lisp/emacs-lisp/nadvice.el: Properly test names when adding advice. X-Git-Tag: emacs-24.3.90~173^2^2~42^2~45^2~387^2~2026^2~460 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=dabefae5beace8691ea548949c32686872ef9989;p=emacs.git * lisp/emacs-lisp/nadvice.el: Properly test names when adding advice. (advice--member-p): New arg `name'. (advice--add-function, advice-member-p): Use it. Fixes: debbugs:14202 --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index d367ddb36f8..2966af7e0bc 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,9 @@ +2013-04-15 Stefan Monnier + + * 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 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 diff --git a/lisp/emacs-lisp/nadvice.el b/lisp/emacs-lisp/nadvice.el index 0632c7d2fc0..db8a0753466 100644 --- a/lisp/emacs-lisp/nadvice.el +++ b/lisp/emacs-lisp/nadvice.el @@ -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)