vulkaninfo: return properly on xcb onnection errors
authorDaniel Charles <daniel.charles@intel.com>
Wed, 13 Nov 2019 23:54:08 +0000 (15:54 -0800)
committerCharles Giessen <46324611+charles-lunarg@users.noreply.github.com>
Fri, 15 Nov 2019 04:33:32 +0000 (21:33 -0700)
Calling xcb_disconnect on the connection to release memory and
return.

Otherwise on a headless display with no X11 backend the nullptr
for the connection will cause segmentation fault on following
xcb calls when xcb_connection_has_error returns a code.

examples ran on headless displays

DISPLAY=:0 vulkaninfo returns XCB_CONN_ERROR
DISPLAY=foobar vulkaninfo returns XCB_CONN_CLOSED_PARSE_ERR

v2:restore xcb_connection=nullptr as other xcb calls need it when
error happened.

Signed-off-by: Daniel Charles <daniel.charles@intel.com>
vulkaninfo/vulkaninfo.h

index bfa8d0e..060ef2c 100644 (file)
@@ -503,7 +503,9 @@ static void AppCreateXcbWindow(AppInstance &inst) {
     if (conn_error) {
         fprintf(stderr, "XCB failed to connect to the X server due to error:%d.\n", conn_error);
         fflush(stderr);
+        xcb_disconnect(inst.xcb_connection);
         inst.xcb_connection = nullptr;
+        return;
     }
 
     setup = xcb_get_setup(inst.xcb_connection);