GNU bug report logs - #55149
29.0.50; Commit f30625943e broke magit/with-editor

Previous Next

Package: emacs;

Reported by: Tassilo Horn <thorn <at> fastmail.fm>

Date: Wed, 27 Apr 2022 12:59:01 UTC

Severity: normal

Tags: patch

Merged with 55160, 55161

Found in version 29.0.50

Done: Stefan Monnier <monnier <at> iro.umontreal.ca>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: Tassilo Horn <thorn <at> fastmail.fm>
To: Juri Linkov <juri <at> linkov.net>
Cc: 55149 <at> debbugs.gnu.org, iarchivedmywholelife <at> gmail.com, monnier <at> iro.umontreal.ca
Subject: bug#55149: 29.0.50; Commit f30625943e broke magit/with-editor
Date: Thu, 28 Apr 2022 09:12:27 +0200
Juri Linkov <juri <at> linkov.net> writes:

> I have the same problem, and distilled it to the shortest test case:
>
> ```
> (defun testa ()
>   1)
>
> (advice-add 'testa :after
>             (lambda (&rest _) 2))
>
> (defun testb ()
>   (interactive)
>   (message "! %S" (testa)))
> ```
>
> In 28 it returns 1.
> In 29 it returns 2.
>
> The regression is that the return value of :after now overrides
> the return value of the original function.

Oh, indeed.  But isn't that exactly as documented for add-function?

 :after (lambda (&rest r) (apply OLDFUN r) (apply FUNCTION r))

Of course, we'd rather want

 :after (lambda (&rest r) (prog1 (apply OLDFUN r) (apply FUNCTION r)))

Bye,
Tassilo




This bug report was last modified 3 years and 24 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.