Handle NULL client (in config file) when showing a status message; also

copy the file when processing if-shell since it may be freed. GitHub
issue 3746.
This commit is contained in:
nicm
2023-11-14 15:59:49 +00:00
parent 1a14d6d2e1
commit 88fd1f00b8
2 changed files with 21 additions and 9 deletions

View File

@ -761,6 +761,7 @@ args_make_commands_prepare(struct cmd *self, struct cmdq_item *item, u_int idx,
struct args_value *value;
struct args_command_state *state;
const char *cmd;
const char *file;
state = xcalloc(1, sizeof *state);
@ -787,7 +788,8 @@ args_make_commands_prepare(struct cmd *self, struct cmdq_item *item, u_int idx,
if (wait)
state->pi.item = item;
cmd_get_source(self, &state->pi.file, &state->pi.line);
cmd_get_source(self, &file, &state->pi.line);
state->pi.file = xstrdup(file);
state->pi.c = tc;
if (state->pi.c != NULL)
state->pi.c->references++;
@ -842,6 +844,7 @@ args_make_commands_free(struct args_command_state *state)
cmd_list_free(state->cmdlist);
if (state->pi.c != NULL)
server_client_unref(state->pi.c);
free((void *)state->pi.file);
free(state->cmd);
free(state);
}