aboutsummaryrefslogtreecommitdiffstats
path: root/java/org
diff options
context:
space:
mode:
authorPhilipp Stephani2025-01-30 16:12:49 +0100
committerPhilipp Stephani2025-02-28 01:45:35 +0100
commit32da093e524d5e28945557701f7c50d7c4a898cd (patch)
tree00275d27c38ef719d99b03b4ccb68023fae71571 /java/org
parentea715b0183f6a19d491cad36eb18c2c9cf0f0dd3 (diff)
downloademacs-32da093e524d5e28945557701f7c50d7c4a898cd.tar.gz
emacs-32da093e524d5e28945557701f7c50d7c4a898cd.zip
Don't overwrite non-local exit symbol and data (Bug#65796).
The previous approach would incorrectly invalidate the returned module values if another non-local exit occurred while dealing with a non-local exit. See Bug#65796. Instead, allocate the values from the usual environment storage, and return statically-allocated objects if that fails. * src/emacs-module.c (struct emacs_env_private): Turn non-local exit symbol and data into normal Lisp objects. (initialize_environment): Initialize them. (mark_module_environment): Prevent them from being garbage-collected. (module_signal_or_throw, module_non_local_exit_signal_1) (module_non_local_exit_throw_1): Adapt uses. (value_to_lisp): No longer scan for them with module assertions enabled. (module_out_of_memory_signal, module_out_of_memory_data): New statically-allocated module values to return in case of allocation failure. (syms_of_module): Initialize them. (module_non_local_exit_get): Allocate module values normally. If that fails, return statically-allocated values. * doc/lispref/internals.texi (Module Nonlocal): Document new behavior.
Diffstat (limited to 'java/org')
0 files changed, 0 insertions, 0 deletions