diff options
author | Edward Welbourne <edward.welbourne@qt.io> | 2017-06-12 11:01:29 +0200 |
---|---|---|
committer | Gatis Paeglis <gatis.paeglis@qt.io> | 2017-06-28 09:06:05 +0000 |
commit | 634f28fa1fd2678d5b73b80367dc18acc929187e (patch) | |
tree | 306e25b19b09b355099e1e00d4c38bf144198daf /src/plugins/platforms/xcb/qxcbscreen.cpp | |
parent | 3ffcfc357dbc51bf62ffb77eca9c99c6bf04e0f2 (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.cpp | 2 |
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); |