diff options
author | Daniel Stone <daniels@collabora.com> | 2017-04-28 16:49:47 +0200 |
---|---|---|
committer | Emil Velikov <emil.l.velikov@gmail.com> | 2017-05-26 10:31:13 +0100 |
commit | b4a82e7f47f3ef6309cd18dbbb1c34e9daa217c7 (patch) | |
tree | 77dbae27f536c4f40736b4ff68823172db93e859 | |
parent | 6dd570fa5709090384ced4d3bd68c06ece06c9aa (diff) |
vulkan: Fix Wayland uninitialised registry
Untangle the exit cleanup paths so we don't try to use the registry
variable before it's been initialised.
Signed-off-by: Daniel Stone <daniels@collabora.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Cc: mesa-stable@lists.freedesktop.org
(cherry picked from commit d9a8bba7f44f7042f0bbd659d0ed342236423dd3)
-rw-r--r-- | src/vulkan/wsi/wsi_common_wayland.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/src/vulkan/wsi/wsi_common_wayland.c b/src/vulkan/wsi/wsi_common_wayland.c index c2dfc657b35..9549b2d16d6 100644 --- a/src/vulkan/wsi/wsi_common_wayland.c +++ b/src/vulkan/wsi/wsi_common_wayland.c @@ -272,7 +272,7 @@ wsi_wl_display_create(struct wsi_wayland *wsi, struct wl_display *wl_display) struct wl_registry *registry = wl_display_get_registry(wl_display); if (!registry) - return NULL; + goto fail; wl_registry_add_listener(registry, ®istry_listener, display); @@ -280,24 +280,25 @@ wsi_wl_display_create(struct wsi_wayland *wsi, struct wl_display *wl_display) wl_display_roundtrip(wl_display); if (!display->drm) - goto fail; + goto fail_registry; /* Round-rip to get wl_drm formats and capabilities */ wl_display_roundtrip(wl_display); /* We need prime support */ if (!(display->capabilities & WL_DRM_CAPABILITY_PRIME)) - goto fail; + goto fail_registry; /* We don't need this anymore */ wl_registry_destroy(registry); return display; -fail: +fail_registry: if (registry) wl_registry_destroy(registry); +fail: wsi_wl_display_destroy(wsi, display); return NULL; } |