diff options
author | nicm <nicm> | 2023-11-14 15:59:49 +0000 |
---|---|---|
committer | nicm <nicm> | 2023-11-14 15:59:49 +0000 |
commit | 88fd1f00b8e2c2455df9d15bd0b0e0d0ef5044ac (patch) | |
tree | a0bbfcd77a8bdffa1f06c9b33194158e2050f156 /arguments.c | |
parent | 1a14d6d2e1c2a23544eefa6e5e65e05ee7e1aca7 (diff) |
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.
Diffstat (limited to 'arguments.c')
-rw-r--r-- | arguments.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/arguments.c b/arguments.c index 3bc888a2..289662d5 100644 --- a/arguments.c +++ b/arguments.c @@ -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); } |