emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master c79e0188e8: Improve protection against faulty clients during DND


From: Po Lu
Subject: master c79e0188e8: Improve protection against faulty clients during DND
Date: Sat, 19 Mar 2022 06:47:56 -0400 (EDT)

branch: master
commit c79e0188e849715a7c4dc306c93ad8d0b3517d32
Author: Po Lu <luangruo@yahoo.com>
Commit: Po Lu <luangruo@yahoo.com>

    Improve protection against faulty clients during DND
    
    * src/xterm.c (x_dnd_send_enter, x_dnd_send_position)
    (xdnd_send_leave, x_dnd_send_drop): Catch errors around call to
    XSendEvent.  The target window could be gone.
---
 src/xterm.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/src/xterm.c b/src/xterm.c
index b820c102f1..fb0fc66ae5 100644
--- a/src/xterm.c
+++ b/src/xterm.c
@@ -1035,7 +1035,9 @@ x_dnd_send_enter (struct frame *f, Window target, int 
supported)
                     PropModeReplace, (unsigned char *) x_dnd_targets,
                     x_dnd_n_targets);
 
+  x_catch_errors (dpyinfo->display);
   XSendEvent (FRAME_X_DISPLAY (f), target, False, 0, &msg);
+  x_uncatch_errors ();
 }
 
 static void
@@ -1075,7 +1077,9 @@ x_dnd_send_position (struct frame *f, Window target, int 
supported,
   if (supported >= 4)
     msg.xclient.data.l[4] = action;
 
+  x_catch_errors (dpyinfo->display);
   XSendEvent (FRAME_X_DISPLAY (f), target, False, 0, &msg);
+  x_uncatch_errors ();
 }
 
 static void
@@ -1094,7 +1098,9 @@ x_dnd_send_leave (struct frame *f, Window target)
   msg.xclient.data.l[3] = 0;
   msg.xclient.data.l[4] = 0;
 
+  x_catch_errors (dpyinfo->display);
   XSendEvent (FRAME_X_DISPLAY (f), target, False, 0, &msg);
+  x_uncatch_errors ();
 }
 
 static void
@@ -1117,7 +1123,9 @@ x_dnd_send_drop (struct frame *f, Window target, Time 
timestamp,
   if (supported >= 1)
     msg.xclient.data.l[2] = timestamp;
 
+  x_catch_errors (dpyinfo->display);
   XSendEvent (FRAME_X_DISPLAY (f), target, False, 0, &msg);
+  x_uncatch_errors ();
 }
 
 void



reply via email to

[Prev in Thread] Current Thread [Next in Thread]