Bug in truncate-command-history-for-gc / pre-gc-hook in XEmacs-21.4.x

Hrvoje Niksic hniksic at xemacs.org
Mon Jun 28 03:09:15 EDT 2004


Nix <nix at esperi.org.uk> writes:

> In a number of places up the call stack in emacs-cl, most notably in
> cl-eval.el's `eval-let' and `MULTIPLE-VALUE-CALL', we make a local
> variable called `values' and fill it with, well, not exactly what
> `truncate-command-history-for-gc' is expecting to find in there. Then,
> glory be to dynamic scope, we happen to GC down there, the hook fires,
> `truncate-command-history-for-gc' runs, and *boom*.

Yikes.  All hail dynamic scope.

> Obviously, a temporary fix is for emacs-cl to stop using `values' as
> a variable name; but that's not an ideal long-term fix. :)

And besides, any poor code that uses `command-history' as a local
variable is also suspect.  :-)

I think your fix is correct; you should perhaps add a comment
explaining why we're going through the hoop of enqueuing an eval
event.




More information about the XEmacs-Beta mailing list