backend/x11: prevent segfault on empty DRI3 response

master
ptrcnull 3 years ago
parent 44069dfd5e
commit 56502be1d1

@ -448,16 +448,20 @@ struct wlr_backend *wlr_x11_backend_create(struct wl_display *display,
xcb_dri3_query_version(x11->xcb, 1, 2); xcb_dri3_query_version(x11->xcb, 1, 2);
xcb_dri3_query_version_reply_t *dri3_reply = xcb_dri3_query_version_reply_t *dri3_reply =
xcb_dri3_query_version_reply(x11->xcb, dri3_cookie, NULL); xcb_dri3_query_version_reply(x11->xcb, dri3_cookie, NULL);
if (dri3_reply && dri3_reply->major_version >= 1) { if (dri3_reply) {
x11->have_dri3 = true; if (dri3_reply->major_version >= 1) {
x11->dri3_major_version = dri3_reply->major_version; x11->have_dri3 = true;
x11->dri3_minor_version = dri3_reply->minor_version; x11->dri3_major_version = dri3_reply->major_version;
x11->dri3_minor_version = dri3_reply->minor_version;
} else {
wlr_log(WLR_INFO, "X11 does not support required DRI3 version "
"(has %"PRIu32".%"PRIu32", want 1.0)",
dri3_reply->major_version, dri3_reply->minor_version);
}
free(dri3_reply);
} else { } else {
wlr_log(WLR_INFO, "X11 does not support required DRI3 version " wlr_log(WLR_INFO, "X11 does not support required DRi3 version");
"(has %"PRIu32".%"PRIu32", want 1.0)",
dri3_reply->major_version, dri3_reply->minor_version);
} }
free(dri3_reply);
} else { } else {
wlr_log(WLR_INFO, "X11 does not support DRI3 extension"); wlr_log(WLR_INFO, "X11 does not support DRI3 extension");
} }

Loading…
Cancel
Save