aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorfrsfnrrg <frsfnrrg@users.noreply.github.com>2018-07-17 11:19:32 -0400
committerfrsfnrrg <frsfnrrg@users.noreply.github.com>2018-07-17 11:35:00 -0400
commit600676688a47bde05bc12110818127c5300dd876 (patch)
treeaa359ee81e7148668eeeba6622a5b7b381747921
parentb3014f7b168eb074bd071ee7cb930d74158a2895 (diff)
downloadsway-600676688a47bde05bc12110818127c5300dd876.zip
sway-600676688a47bde05bc12110818127c5300dd876.tar.gz
sway-600676688a47bde05bc12110818127c5300dd876.tar.bz2
Free individual criteria in free_config
Also free cmd_list when cleaning up a struct criteria.
-rw-r--r--sway/config.c8
-rw-r--r--sway/criteria.c2
2 files changed, 8 insertions, 2 deletions
diff --git a/sway/config.c b/sway/config.c
index 2c05114..c620e4c 100644
--- a/sway/config.c
+++ b/sway/config.c
@@ -24,6 +24,7 @@
#include "sway/input/seat.h"
#include "sway/commands.h"
#include "sway/config.h"
+#include "sway/criteria.h"
#include "sway/tree/arrange.h"
#include "sway/tree/layout.h"
#include "sway/tree/workspace.h"
@@ -105,7 +106,12 @@ void free_config(struct sway_config *config) {
}
list_free(config->seat_configs);
}
- list_free(config->criteria);
+ if (config->criteria) {
+ for (int i = 0; i < config->criteria->length; ++i) {
+ criteria_destroy(config->criteria->items[i]);
+ }
+ list_free(config->criteria);
+ }
list_free(config->no_focus);
list_free(config->active_bar_modifiers);
list_free(config->config_chain);
diff --git a/sway/criteria.c b/sway/criteria.c
index c999d24..e2b248d 100644
--- a/sway/criteria.c
+++ b/sway/criteria.c
@@ -37,7 +37,7 @@ void criteria_destroy(struct criteria *criteria) {
pcre_free(criteria->con_mark);
pcre_free(criteria->window_role);
free(criteria->workspace);
-
+ free(criteria->cmdlist);
free(criteria->raw);
free(criteria);
}