summaryrefslogtreecommitdiff
path: root/src/xfont.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/xfont.c')
-rw-r--r--src/xfont.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/xfont.c b/src/xfont.c
index d4d6ee7c10f..df69c9141bd 100644
--- a/src/xfont.c
+++ b/src/xfont.c
@@ -894,7 +894,10 @@ xfont_close (struct font *font)
{
struct xfont_info *xfi = (struct xfont_info *) font;
- if (xfi->xfont)
+ /* This function may be called from GC when X connection is gone
+ (Bug#16093), and an attempt to free font resourses on invalid
+ display may lead to X protocol errors or segfaults. */
+ if (xfi->xfont && x_display_info_for_display (xfi->display))
{
block_input ();
XFreeFont (xfi->display, xfi->xfont);