diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/ChangeLog | 5 | ||||
| -rw-r--r-- | src/frame.c | 6 |
2 files changed, 9 insertions, 2 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index 0316ca1d2f2..bab050fbfbe 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,3 +1,8 @@ | |||
| 1 | 2013-09-29 Jan Djärv <jan.h.d@swipnet.se> | ||
| 2 | |||
| 3 | * frame.c (delete_frame): Block/unblock input to overcome race | ||
| 4 | condition (Bug#15475). | ||
| 5 | |||
| 1 | 2013-09-29 Andreas Politz <politza@hochschule-trier.de> (tiny change) | 6 | 2013-09-29 Andreas Politz <politza@hochschule-trier.de> (tiny change) |
| 2 | 7 | ||
| 3 | * frame.c (delete_frame): Record selected frame only after | 8 | * frame.c (delete_frame): Record selected frame only after |
diff --git a/src/frame.c b/src/frame.c index f7ba23401ce..6041253e87f 100644 --- a/src/frame.c +++ b/src/frame.c | |||
| @@ -1373,13 +1373,15 @@ delete_frame (Lisp_Object frame, Lisp_Object force) | |||
| 1373 | have called the window-system-dependent frame destruction | 1373 | have called the window-system-dependent frame destruction |
| 1374 | routine. */ | 1374 | routine. */ |
| 1375 | 1375 | ||
| 1376 | if (FRAME_TERMINAL (f)->delete_frame_hook) | ||
| 1377 | (*FRAME_TERMINAL (f)->delete_frame_hook) (f); | ||
| 1378 | 1376 | ||
| 1379 | { | 1377 | { |
| 1378 | block_input (); | ||
| 1379 | if (FRAME_TERMINAL (f)->delete_frame_hook) | ||
| 1380 | (*FRAME_TERMINAL (f)->delete_frame_hook) (f); | ||
| 1380 | struct terminal *terminal = FRAME_TERMINAL (f); | 1381 | struct terminal *terminal = FRAME_TERMINAL (f); |
| 1381 | f->output_data.nothing = 0; | 1382 | f->output_data.nothing = 0; |
| 1382 | f->terminal = 0; /* Now the frame is dead. */ | 1383 | f->terminal = 0; /* Now the frame is dead. */ |
| 1384 | unblock_input (); | ||
| 1383 | 1385 | ||
| 1384 | /* If needed, delete the terminal that this frame was on. | 1386 | /* If needed, delete the terminal that this frame was on. |
| 1385 | (This must be done after the frame is killed.) */ | 1387 | (This must be done after the frame is killed.) */ |