diff --git a/cmd-confirm-before.c b/cmd-confirm-before.c index e9841d2d..fb42d431 100644 --- a/cmd-confirm-before.c +++ b/cmd-confirm-before.c @@ -92,6 +92,7 @@ cmd_confirm_before_exec(struct cmd *self, struct cmdq_item *item) cdata->confirm_key = confirm_key[0]; else { cmdq_error(item, "invalid confirm key"); + free(cdata); return (CMD_RETURN_ERROR); } } @@ -102,8 +103,8 @@ cmd_confirm_before_exec(struct cmd *self, struct cmdq_item *item) xasprintf(&new_prompt, "%s ", prompt); else { cmd = cmd_get_entry(cmd_list_first(cdata->cmdlist))->name; - xasprintf(&new_prompt, "Confirm '%s'? (%c/n) ", - cmd, cdata->confirm_key); + xasprintf(&new_prompt, "Confirm '%s'? (%c/n) ", cmd, + cdata->confirm_key); } status_prompt_set(tc, target, new_prompt, NULL, diff --git a/status.c b/status.c index a11cc8b8..4afac626 100644 --- a/status.c +++ b/status.c @@ -994,8 +994,7 @@ status_prompt_paste(struct client *c) if ((pb = paste_get_top(NULL)) == NULL) return (0); bufdata = paste_buffer_data(pb, &bufsize); - ud = xreallocarray(NULL, bufsize + 1, sizeof *ud); - udp = ud; + ud = udp = xreallocarray(NULL, bufsize + 1, sizeof *ud); for (i = 0; i != bufsize; /* nothing */) { more = utf8_open(udp, bufdata[i]); if (more == UTF8_MORE) { @@ -1016,25 +1015,24 @@ status_prompt_paste(struct client *c) udp->size = 0; n = udp - ud; } - if (n == 0) - return (0); - - c->prompt_buffer = xreallocarray(c->prompt_buffer, size + n + 1, - sizeof *c->prompt_buffer); - if (c->prompt_index == size) { - memcpy(c->prompt_buffer + c->prompt_index, ud, - n * sizeof *c->prompt_buffer); - c->prompt_index += n; - c->prompt_buffer[c->prompt_index].size = 0; - } else { - memmove(c->prompt_buffer + c->prompt_index + n, - c->prompt_buffer + c->prompt_index, - (size + 1 - c->prompt_index) * sizeof *c->prompt_buffer); - memcpy(c->prompt_buffer + c->prompt_index, ud, - n * sizeof *c->prompt_buffer); - c->prompt_index += n; + if (n != 0) { + c->prompt_buffer = xreallocarray(c->prompt_buffer, size + n + 1, + sizeof *c->prompt_buffer); + if (c->prompt_index == size) { + memcpy(c->prompt_buffer + c->prompt_index, ud, + n * sizeof *c->prompt_buffer); + c->prompt_index += n; + c->prompt_buffer[c->prompt_index].size = 0; + } else { + memmove(c->prompt_buffer + c->prompt_index + n, + c->prompt_buffer + c->prompt_index, + (size + 1 - c->prompt_index) * + sizeof *c->prompt_buffer); + memcpy(c->prompt_buffer + c->prompt_index, ud, + n * sizeof *c->prompt_buffer); + c->prompt_index += n; + } } - if (ud != c->prompt_saved) free(ud); return (1); @@ -1839,6 +1837,7 @@ status_prompt_complete_window_menu(struct client *c, struct session *s, } if (size == 0) { menu_free(menu); + free(spm); return (NULL); } if (size == 1) { @@ -1849,6 +1848,7 @@ status_prompt_complete_window_menu(struct client *c, struct session *s, } else tmp = list[0]; free(list); + free(spm); return (tmp); } if (height > size)