From ec4d1cbfc1972efcd49c3c3972ae80aecccdb21a Mon Sep 17 00:00:00 2001 From: Furkan Sahin Date: Sun, 10 Feb 2019 17:04:12 +0100 Subject: fix double free for mode toggle if bar was invisible If the bar was set to "invisible" and subsequently "toggle" was send twice, the new mode was never set and the bar->mode was double freed. Fix this by not requiring the bar->mode to be "hide" and instead show it unconditionally, because it was either hidden or invisible. Fixes #3637 --- sway/commands/bar/mode.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sway/commands/bar/mode.c b/sway/commands/bar/mode.c index d89ddf24..68a80abf 100644 --- a/sway/commands/bar/mode.c +++ b/sway/commands/bar/mode.c @@ -11,7 +11,7 @@ static struct cmd_results *bar_set_mode(struct bar_config *bar, const char *mode if (strcasecmp("toggle", mode) == 0 && !config->reading) { if (strcasecmp("dock", bar->mode) == 0) { bar->mode = strdup("hide"); - } else if (strcasecmp("hide", bar->mode) == 0) { + } else{ bar->mode = strdup("dock"); } } else if (strcasecmp("dock", mode) == 0) { -- cgit v1.2.3