diff options
| author | Stefan Monnier | 2018-03-29 09:11:22 -0400 |
|---|---|---|
| committer | Stefan Monnier | 2018-03-29 09:11:22 -0400 |
| commit | 9ad3560db6b67777bc8f9b370e053b6a19a7501f (patch) | |
| tree | 85c264c182cc14b3e63ae79124859695c1b813e7 /src | |
| parent | 9ea56457f5a4bbc7551636023c4cd1cede590bc3 (diff) | |
| download | emacs-9ad3560db6b67777bc8f9b370e053b6a19a7501f.tar.gz emacs-9ad3560db6b67777bc8f9b370e053b6a19a7501f.zip | |
* src/keyboard.c (record_char, read_key_sequence): Copy raw events
Diffstat (limited to 'src')
| -rw-r--r-- | src/keyboard.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/src/keyboard.c b/src/keyboard.c index 044e3fac693..c0c863f0d3e 100644 --- a/src/keyboard.c +++ b/src/keyboard.c | |||
| @@ -3258,7 +3258,10 @@ record_char (Lisp_Object c) | |||
| 3258 | if (!recorded) | 3258 | if (!recorded) |
| 3259 | { | 3259 | { |
| 3260 | total_keys += total_keys < NUM_RECENT_KEYS; | 3260 | total_keys += total_keys < NUM_RECENT_KEYS; |
| 3261 | ASET (recent_keys, recent_keys_index, c); | 3261 | ASET (recent_keys, recent_keys_index, |
| 3262 | /* Copy the event, in case it gets modified by side-effect | ||
| 3263 | by some remapping function (bug#30955). */ | ||
| 3264 | CONSP (c) ? Fcopy_sequence (c) : c); | ||
| 3262 | if (++recent_keys_index >= NUM_RECENT_KEYS) | 3265 | if (++recent_keys_index >= NUM_RECENT_KEYS) |
| 3263 | recent_keys_index = 0; | 3266 | recent_keys_index = 0; |
| 3264 | } | 3267 | } |
| @@ -9296,7 +9299,10 @@ read_key_sequence (Lisp_Object *keybuf, int bufsize, Lisp_Object prompt, | |||
| 9296 | } | 9299 | } |
| 9297 | 9300 | ||
| 9298 | GROW_RAW_KEYBUF; | 9301 | GROW_RAW_KEYBUF; |
| 9299 | ASET (raw_keybuf, raw_keybuf_count, key); | 9302 | ASET (raw_keybuf, raw_keybuf_count, |
| 9303 | /* Copy the event, in case it gets modified by side-effect | ||
| 9304 | by some remapping function (bug#30955). */ | ||
| 9305 | CONSP (key) ? Fcopy_sequence (key) : key); | ||
| 9300 | raw_keybuf_count++; | 9306 | raw_keybuf_count++; |
| 9301 | } | 9307 | } |
| 9302 | 9308 | ||
| @@ -9343,9 +9349,6 @@ read_key_sequence (Lisp_Object *keybuf, int bufsize, Lisp_Object prompt, | |||
| 9343 | && BUFFERP (XWINDOW (window)->contents) | 9349 | && BUFFERP (XWINDOW (window)->contents) |
| 9344 | && XBUFFER (XWINDOW (window)->contents) != current_buffer) | 9350 | && XBUFFER (XWINDOW (window)->contents) != current_buffer) |
| 9345 | { | 9351 | { |
| 9346 | GROW_RAW_KEYBUF; | ||
| 9347 | ASET (raw_keybuf, raw_keybuf_count, key); | ||
| 9348 | raw_keybuf_count++; | ||
| 9349 | keybuf[t] = key; | 9352 | keybuf[t] = key; |
| 9350 | mock_input = t + 1; | 9353 | mock_input = t + 1; |
| 9351 | 9354 | ||