diff options
| author | Eli Zaretskii | 2026-03-07 09:49:22 +0200 |
|---|---|---|
| committer | Eli Zaretskii | 2026-03-07 09:49:22 +0200 |
| commit | 06471a82c82a9eb1beb4bb49e844af67e2d69b9e (patch) | |
| tree | bb6ddf9686548e17296d6bdab21ee990fa42d5d1 /src | |
| parent | b7aca342e69c398cc8c3a7b8557ccf19cf7d444b (diff) | |
| download | emacs-06471a82c82a9eb1beb4bb49e844af67e2d69b9e.tar.gz emacs-06471a82c82a9eb1beb4bb49e844af67e2d69b9e.zip | |
Fix segfaults in 'kbd_buffer_get_event'
* src/keyboard.c (kbd_buffer_get_event): Ignore selection-request
events when accessing the frame of an event. Suggested by dick
r. chiang <dick.r.chiang@gmail.com>. (Bug#80558)
Diffstat (limited to 'src')
| -rw-r--r-- | src/keyboard.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/keyboard.c b/src/keyboard.c index 8753bebce9c..c16cc5277e9 100644 --- a/src/keyboard.c +++ b/src/keyboard.c | |||
| @@ -4201,7 +4201,11 @@ kbd_buffer_get_event (KBOARD **kbp, | |||
| 4201 | if (*kbp == 0) | 4201 | if (*kbp == 0) |
| 4202 | *kbp = current_kboard; /* Better than returning null ptr? */ | 4202 | *kbp = current_kboard; /* Better than returning null ptr? */ |
| 4203 | 4203 | ||
| 4204 | if (FRAMEP (event->ie.frame_or_window)) | 4204 | /* Selection-request events never have frames, they are actually |
| 4205 | instances of 'struct selection_input_event'. */ | ||
| 4206 | if (!(event->kind == SELECTION_REQUEST_EVENT | ||
| 4207 | || event->kind == SELECTION_CLEAR_EVENT) | ||
| 4208 | && FRAMEP (event->ie.frame_or_window)) | ||
| 4205 | *event_frame = XFRAME (event->ie.frame_or_window); | 4209 | *event_frame = XFRAME (event->ie.frame_or_window); |
| 4206 | 4210 | ||
| 4207 | obj = Qnil; | 4211 | obj = Qnil; |