remember to remove element from queue sandbox/kopasiak/event_fw
authorKrzysztof Opasiak <k.opasiak@samsung.com>
Wed, 26 Apr 2017 18:23:38 +0000 (20:23 +0200)
committerKrzysztof Opasiak <k.opasiak@samsung.com>
Wed, 26 Apr 2017 18:44:05 +0000 (20:44 +0200)
Signed-off-by: Krzysztof Opasiak <k.opasiak@samsung.com>
src/core/queue.h

index 816a2ff271183b98773d1420cfd6697cecd5d68e..d2a55da0d469cf6f1214d8b2d41d1f7244ec80f1 100644 (file)
 
 #define queue_append(head, new) list_add_tail(new, head);
 
-#define queue_pop(head, type, member) \
-        list_first_entry_or_null(head, type, member)
+#define queue_pop(head, type, member) ({                        \
+        type *elem__;                                           \
+        elem__ = list_first_entry_or_null(head, type, member);  \
+        if (elem__)                                             \
+                list_del(&elem__->member);                      \
+        elem__;                                                 \
+})
 
 #define queue_empty(head) list_empty(head)