From f0e19d112c4367d99875eeefbc09d81dbf108501 Mon Sep 17 00:00:00 2001 From: Orestis Date: Tue, 22 Jan 2019 22:35:44 +0200 Subject: [PATCH] cmd_exit: Let i3_exit handle shutdown (#3600) - __lsan_do_leak_check() will terminate the process, so move it to the end of the function. - ev_loop_destroy() must be called after ipc_shutdown() because the latter calls ev_ functions. Fixes #3599 --- src/commands.c | 10 ---------- src/main.c | 19 ++++++++++++------- 2 files changed, 12 insertions(+), 17 deletions(-) diff --git a/src/commands.c b/src/commands.c index eecd59fc..b3c1f5e0 100644 --- a/src/commands.c +++ b/src/commands.c @@ -13,10 +13,6 @@ #include #include -#ifdef I3_ASAN_ENABLED -#include -#endif - #include "shmlog.h" // Macros to make the YAJL API a bit easier to use. @@ -1567,12 +1563,6 @@ void cmd_layout_toggle(I3_CMD, const char *toggle_mode) { */ void cmd_exit(I3_CMD) { LOG("Exiting due to user command.\n"); -#ifdef I3_ASAN_ENABLED - __lsan_do_leak_check(); -#endif - ipc_shutdown(SHUTDOWN_REASON_EXIT); - unlink(config.ipc_socket_path); - xcb_disconnect(conn); exit(0); /* unreached */ diff --git a/src/main.c b/src/main.c index 7eb47c82..5d6a68b9 100644 --- a/src/main.c +++ b/src/main.c @@ -160,13 +160,6 @@ void main_set_x11_cb(bool enable) { * */ static void i3_exit(void) { -/* We need ev >= 4 for the following code. Since it is not *that* important (it - * only makes sure that there are no i3-nagbar instances left behind) we still - * support old systems with libev 3. */ -#if EV_VERSION_MAJOR >= 4 - ev_loop_destroy(main_loop); -#endif - if (*shmlogname != '\0') { fprintf(stderr, "Closing SHM log \"%s\"\n", shmlogname); fflush(stderr); @@ -174,6 +167,18 @@ static void i3_exit(void) { } ipc_shutdown(SHUTDOWN_REASON_EXIT); unlink(config.ipc_socket_path); + xcb_disconnect(conn); + +/* We need ev >= 4 for the following code. Since it is not *that* important (it + * only makes sure that there are no i3-nagbar instances left behind) we still + * support old systems with libev 3. */ +#if EV_VERSION_MAJOR >= 4 + ev_loop_destroy(main_loop); +#endif + +#ifdef I3_ASAN_ENABLED + __lsan_do_leak_check(); +#endif } /* -- 2.39.2