summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/xcb/qxcbscreen.cpp
diff options
context:
space:
mode:
authorEdward Welbourne <edward.welbourne@qt.io>2017-06-12 11:01:29 +0200
committerGatis Paeglis <gatis.paeglis@qt.io>2017-06-28 09:06:05 +0000
commit634f28fa1fd2678d5b73b80367dc18acc929187e (patch)
tree306e25b19b09b355099e1e00d4c38bf144198daf /src/plugins/platforms/xcb/qxcbscreen.cpp
parent3ffcfc357dbc51bf62ffb77eca9c99c6bf04e0f2 (diff)
Fix sporadic crash in QXcbScreen::getOutputProperty()
Although [0] claims "This request does never generate any errors", it seems I sometimes get back a NULL pointer from xcb_randr_get_output_property_reply(), leading to a segfault (in the qdatetimeedit auto-test). So check reply isn't NULL before dereferencing it. [0] https://www.systutorials.com/docs/linux/man/3-xcb_randr_get_output_property_reply/ Change-Id: Iadae835bb3017bf9bb40f180b75b0c391384f99b Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
Diffstat (limited to 'src/plugins/platforms/xcb/qxcbscreen.cpp')
-rw-r--r--src/plugins/platforms/xcb/qxcbscreen.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/plugins/platforms/xcb/qxcbscreen.cpp b/src/plugins/platforms/xcb/qxcbscreen.cpp
index 0bc38869ac..79f37bb028 100644
--- a/src/plugins/platforms/xcb/qxcbscreen.cpp
+++ b/src/plugins/platforms/xcb/qxcbscreen.cpp
@@ -865,7 +865,7 @@ QByteArray QXcbScreen::getOutputProperty(xcb_atom_t atom) const
xcb_randr_get_output_property(xcb_connection(), m_output,
atom, XCB_ATOM_ANY, 0, 100, false, false);
auto reply = xcb_randr_get_output_property_reply(xcb_connection(), cookie, nullptr);
- if (reply->type == XCB_ATOM_INTEGER && reply->format == 8) {
+ if (reply && reply->type == XCB_ATOM_INTEGER && reply->format == 8) {
quint8 *data = new quint8[reply->num_items];
memcpy(data, xcb_randr_get_output_property_data(reply), reply->num_items);
result = QByteArray(reinterpret_cast<const char *>(data), reply->num_items);