diff options
Diffstat (limited to 'prio-queue.c')
-rw-r--r-- | prio-queue.c | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/prio-queue.c b/prio-queue.c index 17252d231b..d3f488cb05 100644 --- a/prio-queue.c +++ b/prio-queue.c @@ -20,17 +20,16 @@ void prio_queue_reverse(struct prio_queue *queue) int i, j; if (queue->compare != NULL) - die("BUG: prio_queue_reverse() on non-LIFO queue"); - for (i = 0; i <= (j = (queue->nr - 1) - i); i++) + BUG("prio_queue_reverse() on non-LIFO queue"); + for (i = 0; i < (j = (queue->nr - 1) - i); i++) swap(queue, i, j); } void clear_prio_queue(struct prio_queue *queue) { - free(queue->array); + FREE_AND_NULL(queue->array); queue->nr = 0; queue->alloc = 0; - queue->array = NULL; queue->insertion_ctr = 0; } @@ -86,3 +85,12 @@ void *prio_queue_get(struct prio_queue *queue) } return result; } + +void *prio_queue_peek(struct prio_queue *queue) +{ + if (!queue->nr) + return NULL; + if (!queue->compare) + return queue->array[queue->nr - 1].data; + return queue->array[0].data; +} |