aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJan Djärv2009-11-27 17:27:04 +0000
committerJan Djärv2009-11-27 17:27:04 +0000
commitece2d4ed181649ebdac464f8149527a9ce75d4ad (patch)
tree431a9fb9ebf71d7ee10aab9ea8a801304ca2cd51 /src
parent59ffcfc485671bea907b4b8353bd0b8f5e75dc41 (diff)
downloademacs-ece2d4ed181649ebdac464f8149527a9ce75d4ad.tar.gz
emacs-ece2d4ed181649ebdac464f8149527a9ce75d4ad.zip
Don't crash if an X terminal is deleted with force == t.
* xftfont.c (xftfont_end_for_frame): Just return if dpyinfo->display is NULL. * xterm.c (x_delete_terminal): Set dpyinfo->display to NULL. * frame.c (frame_make_pointer_invisible) (frame_make_pointer_visible): Just return if there isn't any selected frame.
Diffstat (limited to 'src')
-rw-r--r--src/ChangeLog9
-rw-r--r--src/frame.c6
-rw-r--r--src/xftfont.c7
-rw-r--r--src/xterm.c2
4 files changed, 23 insertions, 1 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index 495e712c646..5d385e6b412 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,5 +1,14 @@
12009-11-27 Jan Djärv <jan.h.d@swipnet.se> 12009-11-27 Jan Djärv <jan.h.d@swipnet.se>
2 2
3 * xftfont.c (xftfont_end_for_frame): Just return if dpyinfo->display
4 is NULL.
5
6 * xterm.c (x_delete_terminal): Set dpyinfo->display to NULL.
7
8 * frame.c (frame_make_pointer_invisible)
9 (frame_make_pointer_visible): Just return if there isn't any selected
10 frame.
11
3 * search.c (simple_search): Remove warning by making *p const. 12 * search.c (simple_search): Remove warning by making *p const.
4 13
52009-11-26 Dan Nicolaescu <dann@ics.uci.edu> 142009-11-26 Dan Nicolaescu <dann@ics.uci.edu>
diff --git a/src/frame.c b/src/frame.c
index 4a9d30dd215..1475eb68fb6 100644
--- a/src/frame.c
+++ b/src/frame.c
@@ -4377,6 +4377,9 @@ frame_make_pointer_invisible ()
4377{ 4377{
4378 if (! NILP (Vmake_pointer_invisible)) 4378 if (! NILP (Vmake_pointer_invisible))
4379 { 4379 {
4380 if (!FRAMEP (selected_frame) || !FRAME_LIVE_P (XFRAME (selected_frame)))
4381 return;
4382
4380 struct frame *f = SELECTED_FRAME (); 4383 struct frame *f = SELECTED_FRAME ();
4381 if (f && !f->pointer_invisible 4384 if (f && !f->pointer_invisible
4382 && FRAME_TERMINAL (f)->toggle_invisible_pointer_hook) 4385 && FRAME_TERMINAL (f)->toggle_invisible_pointer_hook)
@@ -4394,6 +4397,9 @@ frame_make_pointer_visible ()
4394 /* We don't check Vmake_pointer_invisible here in case the 4397 /* We don't check Vmake_pointer_invisible here in case the
4395 pointer was invisible when Vmake_pointer_invisible was set to nil. */ 4398 pointer was invisible when Vmake_pointer_invisible was set to nil. */
4396 4399
4400 if (!FRAMEP (selected_frame) || !FRAME_LIVE_P (XFRAME (selected_frame)))
4401 return;
4402
4397 struct frame *f = SELECTED_FRAME (); 4403 struct frame *f = SELECTED_FRAME ();
4398 if (f && f->pointer_invisible && f->mouse_moved 4404 if (f && f->pointer_invisible && f->mouse_moved
4399 && FRAME_TERMINAL (f)->toggle_invisible_pointer_hook) 4405 && FRAME_TERMINAL (f)->toggle_invisible_pointer_hook)
diff --git a/src/xftfont.c b/src/xftfont.c
index d5ea4aa2ac3..e2819863f07 100644
--- a/src/xftfont.c
+++ b/src/xftfont.c
@@ -668,7 +668,12 @@ static int
668xftfont_end_for_frame (f) 668xftfont_end_for_frame (f)
669 FRAME_PTR f; 669 FRAME_PTR f;
670{ 670{
671 XftDraw *xft_draw = font_get_frame_data (f, &xftfont_driver); 671 XftDraw *xft_draw;
672
673 /* Don't do anything if display is dead */
674 if (FRAME_X_DISPLAY (f) == NULL) return 0;
675
676 xft_draw = font_get_frame_data (f, &xftfont_driver);
672 677
673 if (xft_draw) 678 if (xft_draw)
674 { 679 {
diff --git a/src/xterm.c b/src/xterm.c
index 94093bd3848..9feb6c8966a 100644
--- a/src/xterm.c
+++ b/src/xterm.c
@@ -10747,6 +10747,8 @@ x_delete_terminal (struct terminal *terminal)
10747#endif /* ! USE_GTK */ 10747#endif /* ! USE_GTK */
10748 } 10748 }
10749 10749
10750 /* Mark as dead. */
10751 dpyinfo->display = NULL;
10750 x_delete_display (dpyinfo); 10752 x_delete_display (dpyinfo);
10751 UNBLOCK_INPUT; 10753 UNBLOCK_INPUT;
10752} 10754}