From fcd4caa0df0f69d48e5f5d00076927c31441c851 Mon Sep 17 00:00:00 2001 From: Iskren Chernev Date: Fri, 11 Mar 2011 14:58:06 +0200 Subject: [PATCH] Better handling of creation errors in display. --- wayland/wayland-client.c | 6 ++++++ wayland/wayland-server.c | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/wayland/wayland-client.c b/wayland/wayland-client.c index ad35c30..0be1c47 100644 --- a/wayland/wayland-client.c +++ b/wayland/wayland-client.c @@ -373,6 +373,11 @@ wl_display_connect(const char *name) } display->objects = wl_hash_table_create(); + if (display->objects == NULL) { + close(display->fd); + free(display); + return NULL; + } wl_list_init(&display->global_listener_list); display->proxy.object.interface = &wl_display_interface; @@ -397,6 +402,7 @@ WL_EXPORT void wl_display_destroy(struct wl_display *display) { wl_connection_destroy(display->connection); + wl_hash_table_destroy(display->objects); close(display->fd); free(display); } diff --git a/wayland/wayland-server.c b/wayland/wayland-server.c index 17b91ae..99b9f33 100644 --- a/wayland/wayland-server.c +++ b/wayland/wayland-server.c @@ -544,8 +544,8 @@ wl_display_create(void) display->object.implementation = (void (**)(void)) &display_interface; wl_display_add_object(display, &display->object); if (wl_display_add_global(display, &display->object, NULL)) { - wl_event_loop_destroy(display->loop); wl_hash_table_destroy(display->objects); + wl_event_loop_destroy(display->loop); free(display); return NULL; } -- 2.7.4