]> code.delx.au - pulseaudio/blobdiff - src/pulsecore/hashmap.c
hashmap: Add pa_hashmap_remove_all()
[pulseaudio] / src / pulsecore / hashmap.c
index cfd08b7a16dd4d4dc0b3a98219c1be838eab378b..3e1d9f147f97adfb5f274e7957174a0201395fd3 100644 (file)
@@ -104,15 +104,7 @@ static void remove_entry(pa_hashmap *h, struct hashmap_entry *e) {
 void pa_hashmap_free(pa_hashmap *h, pa_free_cb_t free_cb) {
     pa_assert(h);
 
-    while (h->iterate_list_head) {
-        void *data;
-        data = h->iterate_list_head->value;
-        remove_entry(h, h->iterate_list_head);
-
-        if (free_cb)
-            free_cb(data);
-    }
-
+    pa_hashmap_remove_all(h, free_cb);
     pa_xfree(h);
 }
 
@@ -202,6 +194,19 @@ void* pa_hashmap_remove(pa_hashmap *h, const void *key) {
     return data;
 }
 
+void pa_hashmap_remove_all(pa_hashmap *h, pa_free_cb_t free_cb) {
+    pa_assert(h);
+
+    while (h->iterate_list_head) {
+        void *data;
+        data = h->iterate_list_head->value;
+        remove_entry(h, h->iterate_list_head);
+
+        if (free_cb)
+            free_cb(data);
+    }
+}
+
 void *pa_hashmap_iterate(pa_hashmap *h, void **state, const void **key) {
     struct hashmap_entry *e;