summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFurkan Sahin <furkan-dev@proton.me>2019-02-10 17:04:12 +0100
committerFurkan Sahin <furkan-dev@proton.me>2019-02-10 17:04:12 +0100
commitec4d1cbfc1972efcd49c3c3972ae80aecccdb21a (patch)
treed25161803fa047ae74297dd374005fe3915fd4f9
parentd3ea229305a41b334ba75d3b80a6ca2f3d11715f (diff)
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
-rw-r--r--sway/commands/bar/mode.c2
1 files changed, 1 insertions, 1 deletions
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) {