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>
bb10
Edward Welbourne 2017-06-12 11:01:29 +02:00 committed by Gatis Paeglis
parent 3ffcfc357d
commit 634f28fa1f
1 changed files with 1 additions and 1 deletions

View File

@ -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);