wayland-server: Don't close display fd in fatal error handler
authorKristian Høgsberg <krh@bitplanet.net>
Tue, 9 Jul 2013 22:59:11 +0000 (18:59 -0400)
committerKristian Høgsberg <krh@bitplanet.net>
Tue, 9 Jul 2013 22:59:11 +0000 (18:59 -0400)
We can't do that there, we have to make sure it stays a valid fd until
the application calls wl_display_disconnect().  Otherwise the application
may end up poll()ing on a stale or wrong fd in case another part of the
application (or another thread) triggered a fatal error.

src/wayland-client.c

index 7bd7f0d..34c8196 100644 (file)
@@ -107,8 +107,6 @@ display_fatal_error(struct wl_display *display, int error)
                error = 1;
 
        display->last_error = error;
-       close(display->fd);
-       display->fd = -1;
 
        wl_list_for_each(iter, &display->event_queue_list, link)
                pthread_cond_broadcast(&iter->cond);
@@ -612,8 +610,7 @@ wl_display_disconnect(struct wl_display *display)
        wl_event_queue_release(&display->queue);
        pthread_mutex_destroy(&display->mutex);
        pthread_cond_destroy(&display->reader_cond);
-       if (display->fd > 0)
-               close(display->fd);
+       close(display->fd);
 
        free(display);
 }