]> git.ipfire.org Git - thirdparty/vim.git/commitdiff
patch 8.1.0656: trying to reconnect to X server may cause problems v8.1.0656
authorBram Moolenaar <Bram@vim.org>
Sat, 29 Dec 2018 10:03:23 +0000 (11:03 +0100)
committerBram Moolenaar <Bram@vim.org>
Sat, 29 Dec 2018 10:03:23 +0000 (11:03 +0100)
Problem:    Trying to reconnect to X server may cause problems.
Solution:   Do no try reconnecting when exiting. (James McCoy)

src/os_unix.c
src/version.c

index 91e302a9e61925af9acf0198b9c5ef95cae1f81d..e87331defc3b5eb83d6042d16e97b76df9fe57b2 100644 (file)
@@ -1671,6 +1671,32 @@ x_error_check(Display *dpy UNUSED, XErrorEvent *error_event UNUSED)
     return 0;
 }
 
+/*
+ * Return TRUE when connection to the X server is desired.
+ */
+    static int
+x_connect_to_server(void)
+{
+    // No point in connecting if we are exiting or dying.
+    if (exiting || v_dying)
+       return FALSE;
+
+#if defined(FEAT_CLIENTSERVER)
+    if (x_force_connect)
+       return TRUE;
+#endif
+    if (x_no_connect)
+       return FALSE;
+
+    /* Check for a match with "exclude:" from 'clipboard'. */
+    if (clip_exclude_prog != NULL)
+    {
+       if (vim_regexec_prog(&clip_exclude_prog, FALSE, T_NAME, (colnr_T)0))
+           return FALSE;
+    }
+    return TRUE;
+}
+
 #if defined(FEAT_X11) && defined(FEAT_XCLIPBOARD)
 # if defined(HAVE_SETJMP_H)
 /*
@@ -1716,7 +1742,8 @@ x_IOerror_handler(Display *dpy UNUSED)
     static void
 may_restore_clipboard(void)
 {
-    if (xterm_dpy_retry_count > 0)
+    // Only try restoring if we want the connection.
+    if (x_connect_to_server() && xterm_dpy_retry_count > 0)
     {
        --xterm_dpy_retry_count;
 
@@ -1736,28 +1763,6 @@ may_restore_clipboard(void)
 }
 #endif
 
-/*
- * Return TRUE when connection to the X server is desired.
- */
-    static int
-x_connect_to_server(void)
-{
-#if defined(FEAT_CLIENTSERVER)
-    if (x_force_connect)
-       return TRUE;
-#endif
-    if (x_no_connect)
-       return FALSE;
-
-    /* Check for a match with "exclude:" from 'clipboard'. */
-    if (clip_exclude_prog != NULL)
-    {
-       if (vim_regexec_prog(&clip_exclude_prog, FALSE, T_NAME, (colnr_T)0))
-           return FALSE;
-    }
-    return TRUE;
-}
-
 /*
  * Test if "dpy" and x11_window are valid by getting the window title.
  * I don't actually want it yet, so there may be a simpler call to use, but
index 42ae469ea532dfb0d99f4d929ab48979bb2fc737..a49edb709ccf6bb0a58159eddc0838d89151bd4b 100644 (file)
@@ -799,6 +799,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    656,
 /**/
     655,
 /**/