From 01e971b51e220d63ec460a91d4039d7a0e265f5d Mon Sep 17 00:00:00 2001 From: Orestis Floros Date: Thu, 9 Aug 2018 17:28:05 +0300 Subject: [PATCH] Free ws_assignments on reload This fixes an unreported bug where deleting a workspace assignment and reloading the config file would keep the assignment. --- src/config.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) 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)) { -- 2.39.2