From 07e2505ebd5c27bb6ce9d5ac92b42e94be958e94 Mon Sep 17 00:00:00 2001 From: Oleg Hahm <oleg@hobbykeller.org> Date: Sat, 22 Aug 2015 12:06:13 +0200 Subject: [PATCH] core: assertion not to add twice to priority_queue --- core/include/priority_queue.h | 2 ++ core/priority_queue.c | 3 +++ 2 files changed, 5 insertions(+) diff --git a/core/include/priority_queue.h b/core/include/priority_queue.h index f1df5a6d2c..bdfdaab1c9 100644 --- a/core/include/priority_queue.h +++ b/core/include/priority_queue.h @@ -98,6 +98,8 @@ priority_queue_node_t *priority_queue_remove_head(priority_queue_t *root); * * @param[in,out] root the queue's root * @param[in] new_obj the object to prepend + * + * @pre The queue does not already contain @p new_obj. */ void priority_queue_add(priority_queue_t *root, priority_queue_node_t *new_obj); diff --git a/core/priority_queue.c b/core/priority_queue.c index 261c8a9d66..ac6e9c92b2 100644 --- a/core/priority_queue.c +++ b/core/priority_queue.c @@ -18,6 +18,7 @@ */ #include <inttypes.h> +#include <assert.h> #include "priority_queue.h" @@ -55,6 +56,8 @@ void priority_queue_add(priority_queue_t *root, priority_queue_node_t *new_obj) priority_queue_node_t *node = (priority_queue_node_t *) root; while (node->next != NULL) { + /* not trying to add the same node twice */ + assert(node->next != new_obj); if (node->next->priority > new_obj->priority) { new_obj->next = node->next; node->next = new_obj; -- GitLab