]> code.delx.au - pulseaudio/blobdiff - src/pulsecore/hashmap.c
hashmap: Add pa_hashmap_remove_and_free()
[pulseaudio] / src / pulsecore / hashmap.c
index acac1e06ab0de6dfa7d9a44b63e516309e80fa20..2cc03cbab91f26206462acaaf61a01d12a517e2d 100644 (file)
@@ -207,6 +207,19 @@ void* pa_hashmap_remove(pa_hashmap *h, const void *key) {
     return data;
 }
 
+int pa_hashmap_remove_and_free(pa_hashmap *h, const void *key) {
+    void *data;
+
+    pa_assert(h);
+
+    data = pa_hashmap_remove(h, key);
+
+    if (data && h->value_free_func)
+        h->value_free_func(data);
+
+    return data ? 0 : -1;
+}
+
 void pa_hashmap_remove_all(pa_hashmap *h) {
     pa_assert(h);