]> git.eshelyaron.com Git - emacs.git/commitdiff
Improve error trapping on X
authorPo Lu <luangruo@yahoo.com>
Sun, 29 May 2022 00:51:17 +0000 (08:51 +0800)
committerPo Lu <luangruo@yahoo.com>
Sun, 29 May 2022 00:51:17 +0000 (08:51 +0800)
* xterm.c (x_uncatch_errors, x_had_errors_p): Don't sync if no
request was made since the error trap was installed.

src/xterm.c

index 5c5911346921f87fe9f95db44cb4c212d4b31450..3e5aaf5d4a4a9d4bf6497c0128b7c2fd1b5e1270 100644 (file)
@@ -21265,7 +21265,11 @@ x_uncatch_errors (void)
       /* There is no point in making this extra sync if all requests
         are known to have been fully processed.  */
       && (LastKnownRequestProcessed (x_error_message->dpy)
-         != NextRequest (x_error_message->dpy) - 1))
+         != NextRequest (x_error_message->dpy) - 1)
+      /* Likewise if no request was made since the trap was
+        installed.  */
+      && (NextRequest (x_error_message->dpy)
+         > x_error_message->first_request))
     XSync (x_error_message->dpy, False);
 
   tmp = x_error_message;
@@ -21315,8 +21319,10 @@ x_had_errors_p (Display *dpy)
     emacs_abort ();
 
   /* Make sure to catch any errors incurred so far.  */
-  if (LastKnownRequestProcessed (dpy)
-      != NextRequest (dpy) - 1)
+  if ((LastKnownRequestProcessed (dpy)
+       != NextRequest (dpy) - 1)
+      && (NextRequest (dpy)
+         > x_error_message->first_request))
     XSync (dpy, False);
 
   return x_error_message->string[0] != 0;