summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arguments.c4
-rw-r--r--cmd-command-prompt.c1
-rw-r--r--cmd-confirm-before.c4
-rw-r--r--layout-custom.c2
4 files changed, 9 insertions, 2 deletions
diff --git a/arguments.c b/arguments.c
index 669375e2..bf95b453 100644
--- a/arguments.c
+++ b/arguments.c
@@ -171,6 +171,8 @@ args_parse_flag_argument(struct args_value *values, u_int count, char **cause,
if (optional_argument) {
log_debug("%s: -%c (optional)", __func__, flag);
args_set(args, flag, NULL, ARGS_ENTRY_OPTIONAL_VALUE);
+ args_free_value(new);
+ free(new);
return (0); /* either - or end */
}
xasprintf(cause, "-%c expects an argument", flag);
@@ -662,6 +664,8 @@ args_set(struct args *args, u_char flag, struct args_value *value, int flags)
entry->count++;
if (value != NULL && value->type != ARGS_NONE)
TAILQ_INSERT_TAIL(&entry->values, value, entry);
+ else
+ free(value);
}
/* Get argument value. Will be NULL if it isn't present. */
diff --git a/cmd-command-prompt.c b/cmd-command-prompt.c
index 6010d0fd..60f7ca37 100644
--- a/cmd-command-prompt.c
+++ b/cmd-command-prompt.c
@@ -143,6 +143,7 @@ cmd_command_prompt_exec(struct cmd *self, struct cmdq_item *item)
cdata->prompt_type = status_prompt_type(type);
if (cdata->prompt_type == PROMPT_TYPE_INVALID) {
cmdq_error(item, "unknown type: %s", type);
+ cmd_command_prompt_free(cdata);
return (CMD_RETURN_ERROR);
}
} else
diff --git a/cmd-confirm-before.c b/cmd-confirm-before.c
index 485e6e65..e9841d2d 100644
--- a/cmd-confirm-before.c
+++ b/cmd-confirm-before.c
@@ -76,8 +76,10 @@ cmd_confirm_before_exec(struct cmd *self, struct cmdq_item *item)
cdata = xcalloc(1, sizeof *cdata);
cdata->cmdlist = args_make_commands_now(self, item, 0, 1);
- if (cdata->cmdlist == NULL)
+ if (cdata->cmdlist == NULL) {
+ free(cdata);
return (CMD_RETURN_ERROR);
+ }
if (wait)
cdata->item = item;
diff --git a/layout-custom.c b/layout-custom.c
index d7be5b18..2bfb6d89 100644
--- a/layout-custom.c
+++ b/layout-custom.c
@@ -230,7 +230,7 @@ layout_parse(struct window *w, const char *layout, char **cause)
/* Check the new layout. */
if (!layout_check(lc)) {
*cause = xstrdup("size mismatch after applying layout");
- return (-1);
+ goto fail;
}
/* Resize to the layout size. */