From: Jan D Date: Sun, 29 Mar 2015 19:16:23 +0000 (+0200) Subject: Fixes: debbugs:19175 X-Git-Tag: emacs-24.5-rc2~3 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=4d2e7e17547edda414129aeee910cd0334b4e85e;p=emacs.git Fixes: debbugs:19175 * gtkutil.c (xg_display_open): * xterm.c (x_display_ok, x_term_init): Block SIGIO when opening a display. --- diff --git a/src/ChangeLog b/src/ChangeLog index e6793488e28..39b3c9fc4c5 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,9 @@ +2015-03-29 Jan Djärv + + * gtkutil.c (xg_display_open): + * xterm.c (x_display_ok, x_term_init): Block SIGIO when opening + a display (Bug#19175). + 2015-04-01 Nicolas Petton * Version 24.5 released. diff --git a/src/gtkutil.c b/src/gtkutil.c index fedaa0f3a2d..eddd2b535db 100644 --- a/src/gtkutil.c +++ b/src/gtkutil.c @@ -167,7 +167,9 @@ xg_display_open (char *display_name, Display **dpy) { GdkDisplay *gdpy; + unrequest_sigio (); // See comment in x_display_ok, xterm.c. gdpy = gdk_display_open (display_name); + request_sigio (); if (!gdpy_def && gdpy) { gdpy_def = gdpy; diff --git a/src/xterm.c b/src/xterm.c index 4ca1e131e67..2ac2fe84e52 100644 --- a/src/xterm.c +++ b/src/xterm.c @@ -9719,7 +9719,11 @@ get_bits_and_offset (unsigned long mask, int *bits, int *offset) bool x_display_ok (const char *display) { - Display *dpy = XOpenDisplay (display); + Display *dpy; + // XOpenDisplay fails if it gets a signal. Block SIGIO which may arrive. + unrequest_sigio (); + dpy = XOpenDisplay (display); + request_sigio (); return dpy ? (XCloseDisplay (dpy), 1) : 0; } @@ -9811,7 +9815,9 @@ x_term_init (Lisp_Object display_name, char *xrm_option, char *resource_name) /* gtk_init does set_locale. Fix locale before and after. */ fixup_locale (); + unrequest_sigio (); // See comment in x_display_ok. gtk_init (&argc, &argv2); + request_sigio (); fixup_locale (); g_log_remove_handler ("GLib", id); @@ -9861,10 +9867,12 @@ x_term_init (Lisp_Object display_name, char *xrm_option, char *resource_name) argv[argc++] = xrm_option; } turn_on_atimers (0); + unrequest_sigio (); // See comment in x_display_ok. dpy = XtOpenDisplay (Xt_app_con, SSDATA (display_name), resource_name, EMACS_CLASS, emacs_options, XtNumber (emacs_options), &argc, argv); + request_sigio (); turn_on_atimers (1); #ifdef HAVE_X11XTR6 @@ -9875,7 +9883,9 @@ x_term_init (Lisp_Object display_name, char *xrm_option, char *resource_name) #else /* not USE_X_TOOLKIT */ XSetLocaleModifiers (""); + unrequest_sigio (); // See comment in x_display_ok. dpy = XOpenDisplay (SSDATA (display_name)); + request_sigio (); #endif /* not USE_X_TOOLKIT */ #endif /* not USE_GTK*/