Better handling of creation errors in display.
authorIskren Chernev <iskren.chernev@gmail.com>
Fri, 11 Mar 2011 12:58:06 +0000 (14:58 +0200)
committerKristian Høgsberg <krh@bitplanet.net>
Sun, 13 Mar 2011 02:56:25 +0000 (21:56 -0500)
wayland/wayland-client.c
wayland/wayland-server.c

index ad35c30..0be1c47 100644 (file)
@@ -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);
 }
index 17b91ae..99b9f33 100644 (file)
@@ -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;
        }