]> git.lyx.org Git - features.git/commitdiff
Cleaner fix to ensure 32-bit XCB events
authorEnrico Forestieri <forenr@lyx.org>
Tue, 25 Feb 2020 11:37:51 +0000 (12:37 +0100)
committerEnrico Forestieri <forenr@lyx.org>
Tue, 25 Feb 2020 11:37:51 +0000 (12:37 +0100)
This fix still satisfies Valgrind and is cleaner than the approach
at 19c41bd0: instead of using calloc we now use the C++11 specifier
alignas. For more info, see the following ML thread:
https://www.mail-archive.com/search?l=mid&q=20200219024908.5n4x4osni55gylo3%40tallinn

src/frontends/qt/GuiApplication.cpp

index 8fdd9bf99d1ecec2080c8a314ee6b799d034c512..573ebb905fa67d444653368ae2ab57062e19f27b 100644 (file)
@@ -3352,7 +3352,13 @@ bool GuiApplication::nativeEventFilter(const QByteArray & eventType,
                                // not doing that, maybe because of our
                                // "persistent selection" implementation
                                // (see comments in GuiSelection.cpp).
-                               xcb_selection_notify_event_t nev;
+                               // It is expected that every X11 event is
+                               // 32 bytes long, even if not all 32 bytes are
+                               // needed. See:
+                               // https://www.x.org/releases/current/doc/man/man3/xcb_send_event.3.xhtml
+                               struct alignas(32) padded_event
+                                       : xcb_selection_notify_event_t {};
+                               padded_event nev = {};
                                nev.response_type = XCB_SELECTION_NOTIFY;
                                nev.requestor = srev->requestor;
                                nev.selection = srev->selection;