Subject: bug#65796: closed (Re: bug#65796: dynamic module non_local_exit_get overwrites exit signals)

From: [email-masked] (GNU bug Tracking System)
Date: Fri, 28 Feb 2025 01:16:03 +0000

Your bug report

#65796: dynamic module non_local_exit_get overwrites exit signals

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
65796: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=65796
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#65796: dynamic module non_local_exit_get overwrites exit signals
From: Philipp Stephani <[email-masked]>
To: Xinyang Chen <[email-masked]>
Cc: Philipp Stephani <[email-masked]>, Eli Zaretskii <[email-masked]>, Daniel Colascione <[email-masked]>, [email-masked]
Date: Fri, 28 Feb 2025 02:15:06 +0100
List-Id: <debbugs-submit.debbugs.gnu.org>

> Am 25.02.2025 um 15:43 schrieb Philipp Stephani <[email-masked]>:
> 
>> 
>> IMO what we should do is: if we fail to allocate, we discard the original signal and replace it with an OOM signal (pointing to constants so requiring no allocation).
> 
> Yeah, that's a good idea, thanks for bringing it up.  I've attached a patch to that effect.

Pushed as commit 32da093e524d5e28945557701f7c50d7c4a898cd.

Subject: dynamic module non_local_exit_get overwrites exit signals
From: Xinyang Chen <[email-masked]>
To: [email-masked]
Date: Wed, 6 Sep 2023 18:52:14 -0400
List-Id: <debbugs-submit.debbugs.gnu.org>

Currently `module_non_local_exit_get` returns pointers to fields
in emacs_env_private:
```
  if (p->pending_non_local_exit != emacs_funcall_exit_return)
    {
      *symbol = &p->non_local_exit_symbol;
      *data = &p->non_local_exit_data;
    }
```
this means that if one tries to:
```
funcall(...);
non_local_exit_get(&s1, &d1);
funcall(...);
non_local_exit_get(&s2, &d2);
non_local_exit_signal(s1, d1);
```
you would signal the second error, instead of the first error (I expected
this to happen).
It seems to me that `module_non_local_exit_get` should
`allocate_emacs_value` instead.

-Alan