From e48d90ae12960f88a115652a168b509cbd29b94a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Ekl=C3=B6f?= Date: Thu, 7 Feb 2019 11:51:26 +0100 Subject: [PATCH] bar/xcb: cleanup: don't try to free NULL resources --- bar/xcb.c | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/bar/xcb.c b/bar/xcb.c index db854dc..3f0d284 100644 --- a/bar/xcb.c +++ b/bar/xcb.c @@ -253,21 +253,29 @@ cleanup(struct bar *_bar) struct private *bar = _bar->private; struct xcb_backend *backend = bar->backend.data; - if (backend->cursor_ctx != NULL) { + if (backend->conn == NULL) + return; + + if (backend->cursor != 0) xcb_free_cursor(backend->conn, backend->cursor); + if (backend->cursor_ctx != NULL) xcb_cursor_context_free(backend->cursor_ctx); - free(bar->cursor_name); - bar->cursor_name = NULL; - } + /* TODO: move to bar.c */ + free(bar->cursor_name); + + if (backend->gc != 0) + xcb_free_gc(backend->conn, backend->gc); + if (backend->pixmap != 0) + xcb_free_pixmap(backend->conn, backend->pixmap); + if (backend->win != 0) + xcb_destroy_window(backend->conn, backend->win); + if (backend->colormap != 0) + xcb_free_colormap(backend->conn, backend->colormap); - xcb_free_gc(backend->conn, backend->gc); - xcb_free_pixmap(backend->conn, backend->pixmap); - xcb_destroy_window(backend->conn, backend->win); - xcb_free_colormap(backend->conn, backend->colormap); xcb_flush(backend->conn); - xcb_disconnect(backend->conn); + backend->conn = NULL; } static void