aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Charles <daniel.charles@intel.com>2019-11-13 15:54:08 -0800
committerCharles Giessen <46324611+charles-lunarg@users.noreply.github.com>2019-11-14 21:33:32 -0700
commit99b986c82b14fc75c261feae2fac4fb7bd8ee364 (patch)
tree03c0fab97910664a292b116bbbde8e269185c7d2
parentf094f02955fd54d51cca74244492a91842a7afab (diff)
downloadusermoji-99b986c82b14fc75c261feae2fac4fb7bd8ee364.tar.xz
vulkaninfo: return properly on xcb onnection errors
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>
-rw-r--r--vulkaninfo/vulkaninfo.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/vulkaninfo/vulkaninfo.h b/vulkaninfo/vulkaninfo.h
index bfa8d0e0..060ef2ce 100644
--- a/vulkaninfo/vulkaninfo.h
+++ b/vulkaninfo/vulkaninfo.h
@@ -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);