aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJan Djärv2013-08-07 18:59:23 +0200
committerJan Djärv2013-08-07 18:59:23 +0200
commit8fd9c92e1fc88dc04f3bb2c9a370982e980b941e (patch)
treecdf27ecf9b89295a2f776427a98609122a87227e
parentcdc1ebb9413fb4db15aa5a3175bcb6db3ce02609 (diff)
downloademacs-8fd9c92e1fc88dc04f3bb2c9a370982e980b941e.tar.gz
emacs-8fd9c92e1fc88dc04f3bb2c9a370982e980b941e.zip
* xselect.c (x_send_client_event): Set send_event and serial, memset
data.l as it might be bigger than data.b. Use 24 bit mask to XSendEvent. Fixes: debbugs:15034
-rw-r--r--src/ChangeLog6
-rw-r--r--src/xselect.c10
2 files changed, 12 insertions, 4 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index a0363732164..55f9a5c641b 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,9 @@
12013-08-07 Jan Djärv <jan.h.d@swipnet.se>
2
3 * xselect.c (x_send_client_event): Set send_event and serial, memset
4 data.l as it might be bigger than data.b. Use 24 bit mask to
5 XSendEvent (Bug#15034).
6
12013-08-07 Eli Zaretskii <eliz@gnu.org> 72013-08-07 Eli Zaretskii <eliz@gnu.org>
2 8
3 * xdisp.c (prepare_menu_bars): Don't call x_consider_frame_title 9 * xdisp.c (prepare_menu_bars): Don't call x_consider_frame_title
diff --git a/src/xselect.c b/src/xselect.c
index 3a16d7d3496..e5f2e214fba 100644
--- a/src/xselect.c
+++ b/src/xselect.c
@@ -2628,6 +2628,8 @@ x_send_client_event (Lisp_Object display, Lisp_Object dest, Lisp_Object from,
2628 2628
2629 block_input (); 2629 block_input ();
2630 2630
2631 event.xclient.send_event = True;
2632 event.xclient.serial = 0;
2631 event.xclient.message_type = message_type; 2633 event.xclient.message_type = message_type;
2632 event.xclient.display = dpyinfo->display; 2634 event.xclient.display = dpyinfo->display;
2633 2635
@@ -2635,19 +2637,19 @@ x_send_client_event (Lisp_Object display, Lisp_Object dest, Lisp_Object from,
2635 when sending to the root window. */ 2637 when sending to the root window. */
2636 event.xclient.window = to_root ? FRAME_OUTER_WINDOW (f) : wdest; 2638 event.xclient.window = to_root ? FRAME_OUTER_WINDOW (f) : wdest;
2637 2639
2638 2640 memset (event.xclient.data.l, 0, sizeof (event.xclient.data.l));
2639 memset (event.xclient.data.b, 0, sizeof (event.xclient.data.b));
2640 x_fill_property_data (dpyinfo->display, values, event.xclient.data.b, 2641 x_fill_property_data (dpyinfo->display, values, event.xclient.data.b,
2641 event.xclient.format); 2642 event.xclient.format);
2642 2643
2643 /* If event mask is 0 the event is sent to the client that created 2644 /* If event mask is 0 the event is sent to the client that created
2644 the destination window. But if we are sending to the root window, 2645 the destination window. But if we are sending to the root window,
2645 there is no such client. Then we set the event mask to 0xffff. The 2646 there is no such client. Then we set the event mask to 0xffffff. The
2646 event then goes to clients selecting for events on the root window. */ 2647 event then goes to clients selecting for events on the root window. */
2647 x_catch_errors (dpyinfo->display); 2648 x_catch_errors (dpyinfo->display);
2648 { 2649 {
2649 int propagate = to_root ? False : True; 2650 int propagate = to_root ? False : True;
2650 unsigned mask = to_root ? 0xffff : 0; 2651 long mask = to_root ? 0xffffff : 0;
2652
2651 XSendEvent (dpyinfo->display, wdest, propagate, mask, &event); 2653 XSendEvent (dpyinfo->display, wdest, propagate, mask, &event);
2652 XFlush (dpyinfo->display); 2654 XFlush (dpyinfo->display);
2653 } 2655 }