mirror of
https://github.com/swaywm/sway.git
synced 2025-01-01 18:06:47 +01:00
config: leak sanitizer pass
Add free for everything that's implemented right now. Will need to add more as the implementations are re-added.
This commit is contained in:
parent
f5b33cb4b6
commit
9a326be7f8
1 changed files with 74 additions and 1 deletions
|
@ -31,8 +31,79 @@
|
||||||
|
|
||||||
struct sway_config *config = NULL;
|
struct sway_config *config = NULL;
|
||||||
|
|
||||||
|
static void free_binding(struct sway_binding *bind) {
|
||||||
|
if (!bind) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
free_flat_list(bind->keys);
|
||||||
|
free(bind->command);
|
||||||
|
free(bind);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void free_mode(struct sway_mode *mode) {
|
||||||
|
int i;
|
||||||
|
|
||||||
|
if (!mode) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
free(mode->name);
|
||||||
|
if (mode->keysym_bindings) {
|
||||||
|
for (i = 0; i < mode->keysym_bindings->length; i++) {
|
||||||
|
free_binding(mode->keysym_bindings->items[i]);
|
||||||
|
}
|
||||||
|
list_free(mode->keysym_bindings);
|
||||||
|
}
|
||||||
|
if (mode->keycode_bindings) {
|
||||||
|
for (i = 0; i < mode->keycode_bindings->length; i++) {
|
||||||
|
free_binding(mode->keycode_bindings->items[i]);
|
||||||
|
}
|
||||||
|
list_free(mode->keycode_bindings);
|
||||||
|
}
|
||||||
|
free(mode);
|
||||||
|
}
|
||||||
|
|
||||||
void free_config(struct sway_config *config) {
|
void free_config(struct sway_config *config) {
|
||||||
// TODO
|
int i;
|
||||||
|
|
||||||
|
if (!config) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO: handle all currently unhandled lists as we add implementations
|
||||||
|
list_free(config->symbols);
|
||||||
|
if (config->modes) {
|
||||||
|
for (i = 0; i < config->modes->length; i++) {
|
||||||
|
free_mode(config->modes->items[i]);
|
||||||
|
}
|
||||||
|
list_free(config->modes);
|
||||||
|
}
|
||||||
|
list_free(config->bars);
|
||||||
|
list_free(config->cmd_queue);
|
||||||
|
list_free(config->workspace_outputs);
|
||||||
|
list_free(config->pid_workspaces);
|
||||||
|
list_free(config->output_configs);
|
||||||
|
if (config->input_configs) {
|
||||||
|
for (i = 0; i < config->input_configs->length; i++) {
|
||||||
|
free_input_config(config->input_configs->items[i]);
|
||||||
|
}
|
||||||
|
list_free(config->input_configs);
|
||||||
|
}
|
||||||
|
list_free(config->seat_configs);
|
||||||
|
list_free(config->criteria);
|
||||||
|
list_free(config->no_focus);
|
||||||
|
list_free(config->active_bar_modifiers);
|
||||||
|
list_free(config->config_chain);
|
||||||
|
list_free(config->command_policies);
|
||||||
|
list_free(config->feature_policies);
|
||||||
|
list_free(config->ipc_policies);
|
||||||
|
free(config->current_bar);
|
||||||
|
free(config->floating_scroll_up_cmd);
|
||||||
|
free(config->floating_scroll_down_cmd);
|
||||||
|
free(config->floating_scroll_left_cmd);
|
||||||
|
free(config->floating_scroll_right_cmd);
|
||||||
|
free(config->font);
|
||||||
|
free((char *)config->current_config);
|
||||||
|
free(config);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void config_defaults(struct sway_config *config) {
|
static void config_defaults(struct sway_config *config) {
|
||||||
|
@ -186,6 +257,7 @@ static char *get_config_path(void) {
|
||||||
if (file_exists(path)) {
|
if (file_exists(path)) {
|
||||||
return path;
|
return path;
|
||||||
}
|
}
|
||||||
|
free(path);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -524,6 +596,7 @@ bool read_config(FILE *file, struct sway_config *config) {
|
||||||
|
|
||||||
case CMD_BLOCK_INPUT:
|
case CMD_BLOCK_INPUT:
|
||||||
sway_log(L_DEBUG, "End of input block");
|
sway_log(L_DEBUG, "End of input block");
|
||||||
|
free_input_config(current_input_config);
|
||||||
current_input_config = NULL;
|
current_input_config = NULL;
|
||||||
block = CMD_BLOCK_END;
|
block = CMD_BLOCK_END;
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in a new issue