From cf6075fb29fcd86f11a1f2cc6e906c62f39d4032 Mon Sep 17 00:00:00 2001 From: nicm Date: Fri, 3 May 2019 15:43:01 +0000 Subject: Correct ordering when adding after an existing item. --- cmd-queue.c | 24 +++++++++--------------- 1 file changed, 9 insertions(+), 15 deletions(-) (limited to 'cmd-queue.c') diff --git a/cmd-queue.c b/cmd-queue.c index 9ce25f5f..14d6a824 100644 --- a/cmd-queue.c +++ b/cmd-queue.c @@ -66,6 +66,7 @@ cmdq_append(struct client *c, struct cmdq_item *item) item->queue = queue; TAILQ_INSERT_TAIL(queue, item, entry); + log_debug("%s %s: %s", __func__, cmdq_name(c), item->name); item = next; } while (item != NULL); @@ -81,18 +82,17 @@ cmdq_insert_after(struct cmdq_item *after, struct cmdq_item *item) do { next = item->next; - item->next = NULL; + item->next = after->next; + after->next = item; if (c != NULL) c->references++; item->client = c; item->queue = queue; - if (after->next != NULL) - TAILQ_INSERT_AFTER(queue, after->next, item, entry); - else - TAILQ_INSERT_AFTER(queue, after, item, entry); - after->next = item; + TAILQ_INSERT_AFTER(queue, after, item, entry); + log_debug("%s %s: %s after %s", __func__, cmdq_name(c), + item->name, after->name); item = next; } while (item != NULL); @@ -170,7 +170,7 @@ cmdq_remove(struct cmdq_item *item) TAILQ_REMOVE(item->queue, item, entry); - free((void *)item->name); + free(item->name); free(item); } @@ -206,7 +206,6 @@ cmdq_get_command(struct cmd_list *cmdlist, struct cmd_find_state *current, struct cmdq_item *item, *first = NULL, *last = NULL; struct cmd *cmd; u_int group = cmdq_next_group(); - char *tmp; struct cmdq_shared *shared; shared = xcalloc(1, sizeof *shared); @@ -218,10 +217,8 @@ cmdq_get_command(struct cmd_list *cmdlist, struct cmd_find_state *current, memcpy(&shared->mouse, m, sizeof shared->mouse); TAILQ_FOREACH(cmd, &cmdlist->list, qentry) { - xasprintf(&tmp, "command[%s]", cmd->entry->name); - item = xcalloc(1, sizeof *item); - item->name = tmp; + xasprintf(&item->name, "[%s/%p]", cmd->entry->name, item); item->type = CMDQ_COMMAND; item->group = group; @@ -316,12 +313,9 @@ struct cmdq_item * cmdq_get_callback1(const char *name, cmdq_cb cb, void *data) { struct cmdq_item *item; - char *tmp; - - xasprintf(&tmp, "callback[%s]", name); item = xcalloc(1, sizeof *item); - item->name = tmp; + xasprintf(&item->name, "[%s/%p]", name, item); item->type = CMDQ_CALLBACK; item->group = 0; -- cgit v1.2.3