=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/tmux/cmd-queue.c,v retrieving revision 1.40 retrieving revision 1.41 diff -c -r1.40 -r1.41 *** src/usr.bin/tmux/cmd-queue.c 2016/10/13 22:48:51 1.40 --- src/usr.bin/tmux/cmd-queue.c 2016/10/14 18:41:53 1.41 *************** *** 1,4 **** ! /* $OpenBSD: cmd-queue.c,v 1.40 2016/10/13 22:48:51 nicm Exp $ */ /* * Copyright (c) 2013 Nicholas Marriott --- 1,4 ---- ! /* $OpenBSD: cmd-queue.c,v 1.41 2016/10/14 18:41:53 nicm Exp $ */ /* * Copyright (c) 2013 Nicholas Marriott *************** *** 55,60 **** --- 55,62 ---- int cmdq_free(struct cmd_q *cmdq) { + log_debug("cmdq %p free: %u references", cmdq, cmdq->references); + if (--cmdq->references != 0) { if (cmdq->flags & CMD_Q_DEAD) return (1); *************** *** 186,191 **** --- 188,194 ---- static enum cmd_retval cmdq_continue_one(struct cmd_q *cmdq) { + struct cmd_list *cmdlist = cmdq->item->cmdlist; struct cmd *cmd = cmdq->cmd; enum cmd_retval retval; char *tmp; *************** *** 193,198 **** --- 196,203 ---- const char *name; struct cmd_find_state *fsp, fs; + cmdlist->references++; + tmp = cmd_print(cmd); log_debug("cmdq %p: %s", cmdq, tmp); free(tmp); *************** *** 225,234 **** --- 230,241 ---- end: cmdq_guard(cmdq, "end", flags); + cmd_list_free(cmdlist); return (retval); error: cmdq_guard(cmdq, "error", flags); + cmd_list_free(cmdlist); return (CMD_RETURN_ERROR); } *************** *** 244,251 **** cmdq->references++; notify_disable(); ! log_debug("continuing cmdq %p: flags %#x, client %p", cmdq, cmdq->flags, ! c); empty = TAILQ_EMPTY(&cmdq->queue); if (empty) --- 251,257 ---- cmdq->references++; notify_disable(); ! log_debug("continuing cmdq %p: flags %#x (%p)", cmdq, cmdq->flags, c); empty = TAILQ_EMPTY(&cmdq->queue); if (empty) *************** *** 282,287 **** --- 288,294 ---- } while (cmdq->item != NULL); empty: + log_debug("cmdq %p empty", cmdq); if (cmdq->client_exit > 0) cmdq->client->flags |= CLIENT_EXIT; if (cmdq->emptyfn != NULL)