diff options
| author | Stefan Monnier | 2025-12-15 22:04:50 -0500 |
|---|---|---|
| committer | Stefan Monnier | 2025-12-15 22:04:50 -0500 |
| commit | 0eec0d5174a38c2f3a4a2c38e3af9da4a924b0bc (patch) | |
| tree | 087c9535f80a781657298332fe2b5e5f5bbbcb3d /admin/notes/java | |
| parent | 4aff16bf9e8be9e45b5ac5b98a323957e3af6444 (diff) | |
| download | emacs-0eec0d5174a38c2f3a4a2c38e3af9da4a924b0bc.tar.gz emacs-0eec0d5174a38c2f3a4a2c38e3af9da4a924b0bc.zip | |
(cconv-make-interpreted-closure): Be more conservative
We can't use `cconv-make-interpreted-closure` until it's
compiled because it would get called in an infinite recursion.
The same holds for a lof of the code needed to compute the interpreted
closures used during the computation of `cconv-make-interpreted-closure`.
We used to work around this inf-loop in `loadup.el` with a hack
that checks if two specific functions have been compiled.
In practice that worked well enough in normal use, but was brittle
if you ever tried to load `cconv.el`, or Edebug or `M-C-x` that code
for whatever reason. So we replace it with a more conservative
approach which just short-circuits any recursive invocation.
It makes it conservative in that it will sometimes redirect the call
to the "dumb" `make-interpreted-closure` even though it would be able
to complete the call properly, but it should be infrequent
enough to be worth the added reliability.
* lisp/loadup.el: Simplify setting of
`internal-make-interpreted-closure-function`.
* lisp/emacs-lisp/cconv.el (cconv-make-interpreted-closure):
Avoid recursive invocations.
Diffstat (limited to 'admin/notes/java')
0 files changed, 0 insertions, 0 deletions