diff options
| author | Daniel Charles <daniel.charles@intel.com> | 2019-11-13 15:54:08 -0800 |
|---|---|---|
| committer | Charles Giessen <46324611+charles-lunarg@users.noreply.github.com> | 2019-11-14 21:33:32 -0700 |
| commit | 99b986c82b14fc75c261feae2fac4fb7bd8ee364 (patch) | |
| tree | 03c0fab97910664a292b116bbbde8e269185c7d2 | |
| parent | f094f02955fd54d51cca74244492a91842a7afab (diff) | |
| download | usermoji-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.h | 2 |
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); |
