From 4a753dbefc2e67c218cf41141eaa6afab00f774a Mon Sep 17 00:00:00 2001 From: nicm Date: Mon, 23 Aug 2021 11:04:21 +0000 Subject: Fix a few memory leaks. --- cmd-parse.y | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) (limited to 'cmd-parse.y') diff --git a/cmd-parse.y b/cmd-parse.y index c27d530e..a08c5819 100644 --- a/cmd-parse.y +++ b/cmd-parse.y @@ -426,7 +426,7 @@ command : assignment arg = xcalloc(1, sizeof *arg); arg->type = CMD_PARSE_STRING; - arg->string = xstrdup($2); + arg->string = $2; TAILQ_INSERT_HEAD(&$$->arguments, arg, entry); } | optional_assignment TOKEN arguments @@ -443,7 +443,7 @@ command : assignment arg = xcalloc(1, sizeof *arg); arg->type = CMD_PARSE_STRING; - arg->string = xstrdup($2); + arg->string = $2; TAILQ_INSERT_HEAD(&$$->arguments, arg, entry); } @@ -543,13 +543,13 @@ argument : TOKEN { $$ = xcalloc(1, sizeof *$$); $$->type = CMD_PARSE_STRING; - $$->string = xstrdup($1); + $$->string = $1; } | EQUALS { $$ = xcalloc(1, sizeof *$$); $$->type = CMD_PARSE_STRING; - $$->string = xstrdup($1); + $$->string = $1; } | '{' argument_statements { @@ -817,7 +817,6 @@ cmd_parse_build_command(struct cmd_parse_command *cmd, goto out; values[count].type = ARGS_COMMANDS; values[count].cmdlist = pr->cmdlist; - values[count].cmdlist->references++; break; } count++; -- cgit From 1f0c0914c75980069c6f78872bdee5ceb0ef64e2 Mon Sep 17 00:00:00 2001 From: nicm Date: Mon, 23 Aug 2021 11:08:26 +0000 Subject: Revert one of previous, for some reason it is being freed. --- cmd-parse.y | 1 + 1 file changed, 1 insertion(+) (limited to 'cmd-parse.y') diff --git a/cmd-parse.y b/cmd-parse.y index a08c5819..f79c7fd3 100644 --- a/cmd-parse.y +++ b/cmd-parse.y @@ -817,6 +817,7 @@ cmd_parse_build_command(struct cmd_parse_command *cmd, goto out; values[count].type = ARGS_COMMANDS; values[count].cmdlist = pr->cmdlist; + values[count].cmdlist->references++; break; } count++; -- cgit From 03b83a5a34a4257be9029e1f5195dcddcd531caa Mon Sep 17 00:00:00 2001 From: nicm Date: Mon, 23 Aug 2021 11:48:21 +0000 Subject: Key bindings steal a reference to the command instead of adding their own, it was correct not to add a reference when parsing, but the bind-key then needs to add one. --- cmd-parse.y | 1 - 1 file changed, 1 deletion(-) (limited to 'cmd-parse.y') diff --git a/cmd-parse.y b/cmd-parse.y index f79c7fd3..a08c5819 100644 --- a/cmd-parse.y +++ b/cmd-parse.y @@ -817,7 +817,6 @@ cmd_parse_build_command(struct cmd_parse_command *cmd, goto out; values[count].type = ARGS_COMMANDS; values[count].cmdlist = pr->cmdlist; - values[count].cmdlist->references++; break; } count++; -- cgit