[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Emacs-diffs] master 5b5f441: read_key_sequence: correct the handlin
From: |
Stefan Monnier |
Subject: |
Re: [Emacs-diffs] master 5b5f441: read_key_sequence: correct the handling of raw_keybuf in recursive calls |
Date: |
Mon, 20 Nov 2017 15:09:45 -0500 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (gnu/linux) |
>> > /* Calling read_char with COMMANDFLAG = -2 avoids
>> > redisplay in read_char and its subroutines. */
>> > key = read_char (prevent_redisplay ? -2 : NILP (prompt),
>> > current_binding, last_nonmenu_event,
>> > &used_mouse_menu, NULL);
>> > + raw_keybuf_count = outer_raw_keybuf_count;
>> > + raw_keybuf = outer_raw_keybuf;
>> But here I worry: what if `read_char` exits non-locally because of
>> a signal or a throw?
> raw_keybuf{,_count} should then be re-initialised in command_loop_1 to
> the static buffer variables, just before the call to read_key_sequence.
But this `read_char` is within read_key_sequence: this read_key_sequence
may have been called from anywhere, so after we exit it (non-locally),
we may end up running arbitrary Elisp code before we return to
command_loop_1, can't we? And during this time we'll have raw_keybuf
pointing to an out-of-date stack location, which seems
eminently dangerous.
I think we need to setup an unwind protection of some kind.
Stefan
- Re: [Emacs-diffs] master 5b5f441: read_key_sequence: correct the handling of raw_keybuf in recursive calls, Stefan Monnier, 2017/11/20
- Re: [Emacs-diffs] master 5b5f441: read_key_sequence: correct the handling of raw_keybuf in recursive calls, Alan Mackenzie, 2017/11/20
- Re: [Emacs-diffs] master 5b5f441: read_key_sequence: correct the handling of raw_keybuf in recursive calls,
Stefan Monnier <=
- Re: [Emacs-diffs] master 5b5f441: read_key_sequence: correct the handling of raw_keybuf in recursive calls, Alan Mackenzie, 2017/11/20
- Re: [Emacs-diffs] master 5b5f441: read_key_sequence: correct the handling of raw_keybuf in recursive calls, Stefan Monnier, 2017/11/20
- Re: [Emacs-diffs] master 5b5f441: read_key_sequence: correct the handling of raw_keybuf in recursive calls, Alan Mackenzie, 2017/11/22
- Re: [Emacs-diffs] master 5b5f441: read_key_sequence: correct the handling of raw_keybuf in recursive calls, Stefan Monnier, 2017/11/22
- Re: [Emacs-diffs] master 5b5f441: read_key_sequence: correct the handling of raw_keybuf in recursive calls, Alan Mackenzie, 2017/11/22
- Re: [Emacs-diffs] master 5b5f441: read_key_sequence: correct the handling of raw_keybuf in recursive calls, Stefan Monnier, 2017/11/23
- Re: [Emacs-diffs] master 5b5f441: read_key_sequence: correct the handling of raw_keybuf in recursive calls, Alan Mackenzie, 2017/11/23
- Re: [Emacs-diffs] master 5b5f441: read_key_sequence: correct the handling of raw_keybuf in recursive calls, Stefan Monnier, 2017/11/23
- Re: [Emacs-diffs] master 5b5f441: read_key_sequence: correct the handling of raw_keybuf in recursive calls, Alan Mackenzie, 2017/11/28
- Re: [Emacs-diffs] master 5b5f441: read_key_sequence: correct the handling of raw_keybuf in recursive calls, Eli Zaretskii, 2017/11/28