diff --git a/src/shared/queue.c b/src/shared/queue.c
index c9c0812..20f51b8 100644
--- a/src/shared/queue.c
+++ b/src/shared/queue.c
return queue->tail->data;
}
+static bool queue_find_entry(struct queue *queue, const void *data)
+{
+ struct queue_entry *entry;
+
+ for (entry = queue->head; entry; entry = entry->next)
+ if (entry == data)
+ return true;
+
+ return false;
+}
+
void queue_foreach(struct queue *queue, queue_foreach_func_t function,
void *user_data)
{
entry = tmp->next;
function(tmp->data, user_data);
+
+ if (!queue_find_entry(queue, entry))
+ break;
}
queue_unref(queue);
}