From: Orestis Floros Date: Thu, 9 Aug 2018 14:28:05 +0000 (+0300) Subject: Free ws_assignments on reload X-Git-Tag: 4.16~61^2 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=01e971b51e220d63ec460a91d4039d7a0e265f5d;p=i3%2Fi3 Free ws_assignments on reload This fixes an unreported bug where deleting a workspace assignment and reloading the config file would keep the assignment. --- diff --git a/src/config.c b/src/config.c index ab19bae3..5be1fd52 100644 --- a/src/config.c +++ b/src/config.c @@ -97,9 +97,8 @@ void load_configuration(xcb_connection_t *conn, const char *override_configpath, FREE(mode); } - struct Assignment *assign; while (!TAILQ_EMPTY(&assignments)) { - assign = TAILQ_FIRST(&assignments); + struct Assignment *assign = TAILQ_FIRST(&assignments); if (assign->type == A_TO_WORKSPACE || assign->type == A_TO_WORKSPACE_NUMBER) FREE(assign->dest.workspace); else if (assign->type == A_COMMAND) @@ -111,6 +110,14 @@ void load_configuration(xcb_connection_t *conn, const char *override_configpath, FREE(assign); } + while (!TAILQ_EMPTY(&ws_assignments)) { + struct Workspace_Assignment *assign = TAILQ_FIRST(&ws_assignments); + FREE(assign->name); + FREE(assign->output); + TAILQ_REMOVE(&ws_assignments, assign, ws_assignments); + FREE(assign); + } + /* Clear bar configs */ Barconfig *barconfig; while (!TAILQ_EMPTY(&barconfigs)) {