GNU bug report logs -
#51140
28.0.50; cl-letf appears not to work with native-comp (at least for process-exit-status and other builtins)
Previous Next
Reported by: Robert Irelan <rirelan <at> gmail.com>
Date: Mon, 11 Oct 2021 22:38:01 UTC
Severity: normal
Tags: moreinfo
Found in version 28.0.50
Done: Lars Ingebrigtsen <larsi <at> gnus.org>
Bug is archived. No further changes may be made.
Full log
Message #11 received at 51140 <at> debbugs.gnu.org (full text, mbox):
I changed the function definition to the following, which I think
doesn't have the free variable problem, and got the same error:
(defun +ivy--always-return-zero-exit-code-a (fn &rest args)
(let ((process-exit-status-orig
(symbol-function 'process-exit-status)))
(cl-letf* (((symbol-function 'process-exit-status)
(lambda (_proc)
(let ((code (funcall process-exit-status-orig proc)))
(if (= code 2) 0 code)))))
(apply fn args)))
Interestingly, I now see the error when I evaluate the function
definition, not when I call the advised function.
I think this isolates it to `cl-flet`, since `symbol-function` seems
to return the correct function definition and I can funcall that
definition.
(let* ((process-exit-status-orig
(symbol-function 'process-exit-status))
(proc (start-process-shell-command "true" nil "true")))
(sleep-for 1)
(funcall process-exit-status-orig proc))
returns 0, as expected.
On Mon, Oct 11, 2021 at 7:30 PM Michael Heerdegen
<michael_heerdegen <at> web.de> wrote:
>
> Robert Irelan <rirelan <at> gmail.com> writes:
>
> > (defun +ivy--always-return-zero-exit-code-a (fn &rest args)
> > (cl-letf* (((symbol-function 'process-exit-status-orig)
> > (symbol-function 'process-exit-status))
> > ((symbol-function 'process-exit-status)
> > (lambda (_proc)
> ^^^^^
> > (let ((code (process-exit-status-orig proc)))
> ^^^^
>
> I don't know about native compilation, I just found this free variable
> problem when compiling your defun normally. You may want to correct
> your recipe.
>
> Michael.
--
Robert Irelan
rirelan <at> gmail.com
This bug report was last modified 2 years and 247 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.