Skip to content
Snippets Groups Projects
Commit 07e2505e authored by Oleg Hahm's avatar Oleg Hahm
Browse files

core: assertion not to add twice to priority_queue

parent 98bd5ee0
No related branches found
No related tags found
No related merge requests found
...@@ -98,6 +98,8 @@ priority_queue_node_t *priority_queue_remove_head(priority_queue_t *root); ...@@ -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,out] root the queue's root
* @param[in] new_obj the object to prepend * @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); void priority_queue_add(priority_queue_t *root, priority_queue_node_t *new_obj);
......
...@@ -18,6 +18,7 @@ ...@@ -18,6 +18,7 @@
*/ */
#include <inttypes.h> #include <inttypes.h>
#include <assert.h>
#include "priority_queue.h" #include "priority_queue.h"
...@@ -55,6 +56,8 @@ void priority_queue_add(priority_queue_t *root, priority_queue_node_t *new_obj) ...@@ -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; priority_queue_node_t *node = (priority_queue_node_t *) root;
while (node->next != NULL) { while (node->next != NULL) {
/* not trying to add the same node twice */
assert(node->next != new_obj);
if (node->next->priority > new_obj->priority) { if (node->next->priority > new_obj->priority) {
new_obj->next = node->next; new_obj->next = node->next;
node->next = new_obj; node->next = new_obj;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment