From 6d75fe64efdabe7e13ad296b3002a4a91263339f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Ekl=C3=B6f?= Date: Wed, 26 Dec 2018 11:42:42 +0100 Subject: [PATCH] module/xkb: signal module-ready when failing early --- modules/xkb/xkb.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/modules/xkb/xkb.c b/modules/xkb/xkb.c index 0f8773c..a91f406 100644 --- a/modules/xkb/xkb.c +++ b/modules/xkb/xkb.c @@ -387,27 +387,27 @@ talk_to_xkb(struct module_run_context *ctx, xcb_connection_t *conn) const struct bar *bar = ctx->module->bar; if (!xkb_enable(conn)) - return false; + goto err; if (!register_for_events(conn)) - return false; + goto err; int xkb_event_base = get_xkb_event_base(conn); if (xkb_event_base == -1) - return false; + goto err; int current = get_current_layout(conn); if (current == -1) - return false; + goto err; struct layouts layouts = get_layouts(conn); if (layouts.count == -1) - return false; + goto err; if (current >= layouts.count) { LOG_ERR("current layout index: %d >= %zd", current, layouts.count); free_layouts(layouts); - return false; + goto err; } m->layouts = layouts; @@ -416,15 +416,19 @@ talk_to_xkb(struct module_run_context *ctx, xcb_connection_t *conn) module_signal_ready(ctx); return event_loop(ctx, conn, xkb_event_base); + +err: + module_signal_ready(ctx); + return false; } static int run(struct module_run_context *ctx) { - //struct private *m = ctx->module->private; xcb_connection_t *conn = xcb_connect(NULL, NULL); if (conn == NULL) { LOG_ERR("failed to connect to X server"); + module_signal_ready(ctx); return EXIT_FAILURE; }