From 3f4d45ae2ad3258a4c13fe7bacc9f52d6ad68ee1 Mon Sep 17 00:00:00 2001 From: Kirill Petrashin Date: Sun, 29 Mar 2026 16:05:22 +0300 Subject: Make ppq_insert() handle when pos is in ppq but new one has better priority --- priority_queue.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'priority_queue.c') diff --git a/priority_queue.c b/priority_queue.c index 6460a9e..d899103 100644 --- a/priority_queue.c +++ b/priority_queue.c @@ -28,6 +28,8 @@ int ppq_insert(PositionPQ **ppq, Position pos, size_t priority) { if (start->priority > priority) { n->next = start; start = n; + *ppq = start; + ppq_remove(&(n->next), pos); return PPQ_INSERT_SUCCESS; } @@ -48,6 +50,8 @@ int ppq_insert(PositionPQ **ppq, Position pos, size_t priority) { n->next = temp->next; temp->next = n; + ppq_remove(&(n->next), pos); + return PPQ_INSERT_SUCCESS; } @@ -71,7 +75,7 @@ void ppq_remove(PositionPQ **ppq, Position pos) { PositionPQ *temp = *ppq; if (temp == NULL) { - error("Tried to remove a pos from a NULL PositionPQ\n"); + return; } PositionPQ *prev = NULL; -- cgit v1.2.3