bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#14702: 24.3.50; Byte-compiling called-interactively-p inside catch


From: Stefan Monnier
Subject: bug#14702: 24.3.50; Byte-compiling called-interactively-p inside catch
Date: Mon, 24 Jun 2013 21:39:21 -0400
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (gnu/linux)

>    (defun baz ()
>      (interactive)
>      (catch 'test
>        (if (called-interactively-p 'any)

If it hurts, don't do that.
Internally, the byte-compiled form of catch ends up wrapping its body
inside a lambda, so the called-interactively-p test refers to the
implicit lambda added, rather than to the enclosing function
you defined.

It would be good to avoid this intermediate lambda for performance
reasons (which would incidentally also fix this particular issue), but
in the mean time (and more generally) either avoid
called-interactively-p (pass an extra argument instead), or avoid
placing it "deep" within your function (e.g. inside
a catch/unwind-protect/condition-case/save-foobar/...).


        Stefan





reply via email to

[Prev in Thread] Current Thread [Next in Thread]