diff options
Diffstat (limited to 'priority_queue.c')
| -rw-r--r-- | priority_queue.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/priority_queue.c b/priority_queue.c index c8bd8b0..472f5c3 100644 --- a/priority_queue.c +++ b/priority_queue.c @@ -12,6 +12,7 @@ PositionPQ *ppq_new(Position pos, size_t priority) { return ppq; } +/* FIXME: this is shitty */ void ppq_insert(PositionPQ **ppq, Position pos, size_t priority) { PositionPQ *start = *ppq; @@ -29,8 +30,12 @@ void ppq_insert(PositionPQ **ppq, Position pos, size_t priority) { PositionPQ *temp = *ppq; - while(temp->next != NULL && temp->next->priority <= priority) + while(temp->next != NULL && temp->next->priority <= priority) { + if (temp->pos.x == pos.x && temp->pos.y == pos.y && temp->priority <= priority) { + return; /* pos is already at the start of ppq with a fine priority */ + } temp = temp->next; + } n->next = temp->next; temp->next = n; |
