summaryrefslogtreecommitdiffstats
path: root/cmd-queue.c
diff options
context:
space:
mode:
authornicm <nicm>2019-05-03 15:43:01 +0000
committernicm <nicm>2019-05-03 15:43:01 +0000
commitcf6075fb29fcd86f11a1f2cc6e906c62f39d4032 (patch)
treea498d462a31546fbfeb455885a027e3a15f7a50d /cmd-queue.c
parent33298d6df67e2ba3d90abdc94250eeaa963c3730 (diff)
Correct ordering when adding after an existing item.
Diffstat (limited to 'cmd-queue.c')
-rw-r--r--cmd-queue.c24
1 files changed, 9 insertions, 15 deletions
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;