summaryrefslogtreecommitdiff
path: root/plist.c
diff options
context:
space:
mode:
Diffstat (limited to 'plist.c')
-rw-r--r--plist.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/plist.c b/plist.c
index 0320b0f..4da76d1 100644
--- a/plist.c
+++ b/plist.c
@@ -31,10 +31,12 @@
#include "plist.h"
void
-plist_add(struct plist *plist, struct plist_node *pnode)
+plist_add(struct plist *plist, struct plist_node *pnode, unsigned int priority)
{
struct plist_node *next;
+ pnode->priority = priority;
+
if (plist_empty(plist)) {
list_insert_head(&plist->list, &pnode->node);
list_insert_head(&plist->prio_list, &pnode->prio_node);
@@ -50,6 +52,8 @@ plist_add(struct plist *plist, struct plist_node *pnode)
if (list_end(&plist->prio_list, &next->prio_node)
|| (pnode->priority != next->priority)) {
list_insert_before(&next->prio_node, &pnode->prio_node);
+ } else {
+ list_init(&pnode->prio_node);
}
list_insert_before(&next->node, &pnode->node);