aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar Brian Ashworth <bosrsf04@gmail.com>2019-02-11 03:26:12 -0500
committerLibravatar Drew DeVault <sir@cmpwn.com>2019-02-11 10:22:53 -0500
commita5a189cc73941c41f7486ba6bb561ca80dcea601 (patch)
treee1de3ad589e623ec08b7391a2172ee97a50b4263
parentipc: handle unnamed xkb_active_layout_name (diff)
downloadsway-a5a189cc73941c41f7486ba6bb561ca80dcea601.tar.gz
sway-a5a189cc73941c41f7486ba6bb561ca80dcea601.tar.zst
sway-a5a189cc73941c41f7486ba6bb561ca80dcea601.zip
fix misc memory leaks
This fixes a few misc memory leaks reported by asan: - Items of `config->config_chain` are now freed instead of just the list itself - `bar->swaybar_command` is now freed - The result returned by a seat subcommand is now returned instead of leaked
-rw-r--r--sway/commands/seat.c2
-rw-r--r--sway/config.c2
-rw-r--r--sway/config/bar.c1
3 files changed, 3 insertions, 2 deletions
diff --git a/sway/commands/seat.c b/sway/commands/seat.c
index 5b23dcc6..aa36ba95 100644
--- a/sway/commands/seat.c
+++ b/sway/commands/seat.c
@@ -50,5 +50,5 @@ struct cmd_results *cmd_seat(int argc, char **argv) {
50 } 50 }
51 51
52 config->handler_context.seat_config = NULL; 52 config->handler_context.seat_config = NULL;
53 return cmd_results_new(CMD_SUCCESS, NULL); 53 return res ? res : cmd_results_new(CMD_SUCCESS, NULL);
54} 54}
diff --git a/sway/config.c b/sway/config.c
index ae8d11e3..cd2d18a2 100644
--- a/sway/config.c
+++ b/sway/config.c
@@ -118,7 +118,7 @@ void free_config(struct sway_config *config) {
118 } 118 }
119 list_free(config->no_focus); 119 list_free(config->no_focus);
120 list_free(config->active_bar_modifiers); 120 list_free(config->active_bar_modifiers);
121 list_free(config->config_chain); 121 list_free_items_and_destroy(config->config_chain);
122 list_free(config->command_policies); 122 list_free(config->command_policies);
123 list_free(config->feature_policies); 123 list_free(config->feature_policies);
124 list_free(config->ipc_policies); 124 list_free(config->ipc_policies);
diff --git a/sway/config/bar.c b/sway/config/bar.c
index bafef307..2e28fa1e 100644
--- a/sway/config/bar.c
+++ b/sway/config/bar.c
@@ -46,6 +46,7 @@ void free_bar_config(struct bar_config *bar) {
46 free(bar->position); 46 free(bar->position);
47 free(bar->hidden_state); 47 free(bar->hidden_state);
48 free(bar->status_command); 48 free(bar->status_command);
49 free(bar->swaybar_command);
49 free(bar->font); 50 free(bar->font);
50 free(bar->separator_symbol); 51 free(bar->separator_symbol);
51 for (int i = 0; i < bar->bindings->length; i++) { 52 for (int i = 0; i < bar->bindings->length; i++) {