aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJan Djärv2013-09-29 12:21:58 +0200
committerJan Djärv2013-09-29 12:21:58 +0200
commitcaa50be230ca9313be276a7a48bba2417ed3e573 (patch)
treefc88e9a4de8737be05d547c11d67914b15846db3
parentd3e2acb659b1ff5a7e71bceb960af75f33a9ee39 (diff)
downloademacs-caa50be230ca9313be276a7a48bba2417ed3e573.tar.gz
emacs-caa50be230ca9313be276a7a48bba2417ed3e573.zip
* frame.c (delete_frame): Block/unblock input to overcome race
condition. Fixes: debbugs:15475
-rw-r--r--src/ChangeLog5
-rw-r--r--src/frame.c6
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 @@
12013-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
12013-09-29 Andreas Politz <politza@hochschule-trier.de> (tiny change) 62013-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.) */