diff options
author | Brian Ashworth <bosrsf04@gmail.com> | 2019-02-11 03:26:12 -0500 |
---|---|---|
committer | emersion <contact@emersion.fr> | 2019-02-11 10:10:48 +0100 |
commit | d2c896ed84534f5c4dc7e8c30c3e92be4081fab1 (patch) | |
tree | e1de3ad589e623ec08b7391a2172ee97a50b4263 /sway | |
parent | ipc: handle unnamed xkb_active_layout_name (diff) | |
download | sway-d2c896ed84534f5c4dc7e8c30c3e92be4081fab1.tar.gz sway-d2c896ed84534f5c4dc7e8c30c3e92be4081fab1.tar.zst sway-d2c896ed84534f5c4dc7e8c30c3e92be4081fab1.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
Diffstat (limited to 'sway')
-rw-r--r-- | sway/commands/seat.c | 2 | ||||
-rw-r--r-- | sway/config.c | 2 | ||||
-rw-r--r-- | sway/config/bar.c | 1 |
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++) { |