]> code.delx.au - pulseaudio/blobdiff - src/pulse/proplist.c
Use pa_hashmap_remove_and_free() where appropriate
[pulseaudio] / src / pulse / proplist.c
index abd551bc805ba70b8d62f606fd20ff8cd2fd2f59..a5ab7d264fa0cb6eab877550b42867e863607718 100644 (file)
@@ -64,19 +64,19 @@ static void property_free(struct property *prop) {
 }
 
 pa_proplist* pa_proplist_new(void) {
-    return MAKE_PROPLIST(pa_hashmap_new(pa_idxset_string_hash_func, pa_idxset_string_compare_func));
+    return MAKE_PROPLIST(pa_hashmap_new_full(pa_idxset_string_hash_func, pa_idxset_string_compare_func, NULL, (pa_free_cb_t) property_free));
 }
 
 void pa_proplist_free(pa_proplist* p) {
     pa_assert(p);
 
-    pa_hashmap_free(MAKE_HASHMAP(p), (pa_free_cb_t) property_free);
+    pa_hashmap_free(MAKE_HASHMAP(p));
 }
 
 /** Will accept only valid UTF-8 */
 int pa_proplist_sets(pa_proplist *p, const char *key, const char *value) {
     struct property *prop;
-    pa_bool_t add = FALSE;
+    bool add = false;
 
     pa_assert(p);
     pa_assert(key);
@@ -88,7 +88,7 @@ int pa_proplist_sets(pa_proplist *p, const char *key, const char *value) {
     if (!(prop = pa_hashmap_get(MAKE_HASHMAP(p), key))) {
         prop = pa_xnew(struct property, 1);
         prop->key = pa_xstrdup(key);
-        add = TRUE;
+        add = true;
     } else
         pa_xfree(prop->value);
 
@@ -104,7 +104,7 @@ int pa_proplist_sets(pa_proplist *p, const char *key, const char *value) {
 /** Will accept only valid UTF-8 */
 static int proplist_setn(pa_proplist *p, const char *key, size_t key_length, const char *value, size_t value_length) {
     struct property *prop;
-    pa_bool_t add = FALSE;
+    bool add = false;
     char *k, *v;
 
     pa_assert(p);
@@ -123,7 +123,7 @@ static int proplist_setn(pa_proplist *p, const char *key, size_t key_length, con
     if (!(prop = pa_hashmap_get(MAKE_HASHMAP(p), k))) {
         prop = pa_xnew(struct property, 1);
         prop->key = k;
-        add = TRUE;
+        add = true;
     } else {
         pa_xfree(prop->value);
         pa_xfree(k);
@@ -155,7 +155,7 @@ int pa_proplist_setp(pa_proplist *p, const char *pair) {
 
 static int proplist_sethex(pa_proplist *p, const char *key, size_t key_length, const char *value, size_t value_length) {
     struct property *prop;
-    pa_bool_t add = FALSE;
+    bool add = false;
     char *k, *v;
     uint8_t *d;
     size_t dn;
@@ -186,7 +186,7 @@ static int proplist_sethex(pa_proplist *p, const char *key, size_t key_length, c
     if (!(prop = pa_hashmap_get(MAKE_HASHMAP(p), k))) {
         prop = pa_xnew(struct property, 1);
         prop->key = k;
-        add = TRUE;
+        add = true;
     } else {
         pa_xfree(prop->value);
         pa_xfree(k);
@@ -205,7 +205,7 @@ static int proplist_sethex(pa_proplist *p, const char *key, size_t key_length, c
 /** Will accept only valid UTF-8 */
 int pa_proplist_setf(pa_proplist *p, const char *key, const char *format, ...) {
     struct property *prop;
-    pa_bool_t add = FALSE;
+    bool add = false;
     va_list ap;
     char *v;
 
@@ -226,7 +226,7 @@ int pa_proplist_setf(pa_proplist *p, const char *key, const char *format, ...) {
     if (!(prop = pa_hashmap_get(MAKE_HASHMAP(p), key))) {
         prop = pa_xnew(struct property, 1);
         prop->key = pa_xstrdup(key);
-        add = TRUE;
+        add = true;
     } else
         pa_xfree(prop->value);
 
@@ -245,7 +245,7 @@ fail:
 
 int pa_proplist_set(pa_proplist *p, const char *key, const void *data, size_t nbytes) {
     struct property *prop;
-    pa_bool_t add = FALSE;
+    bool add = false;
 
     pa_assert(p);
     pa_assert(key);
@@ -257,7 +257,7 @@ int pa_proplist_set(pa_proplist *p, const char *key, const void *data, size_t nb
     if (!(prop = pa_hashmap_get(MAKE_HASHMAP(p), key))) {
         prop = pa_xnew(struct property, 1);
         prop->key = pa_xstrdup(key);
-        add = TRUE;
+        add = true;
     } else
         pa_xfree(prop->value);
 
@@ -343,18 +343,15 @@ void pa_proplist_update(pa_proplist *p, pa_update_mode_t mode, const pa_proplist
 }
 
 int pa_proplist_unset(pa_proplist *p, const char *key) {
-    struct property *prop;
-
     pa_assert(p);
     pa_assert(key);
 
     if (!pa_proplist_key_valid(key))
         return -1;
 
-    if (!(prop = pa_hashmap_remove(MAKE_HASHMAP(p), key)))
+    if (pa_hashmap_remove_and_free(MAKE_HASHMAP(p), key) < 0)
         return -2;
 
-    property_free(prop);
     return 0;
 }
 
@@ -654,7 +651,7 @@ int pa_proplist_contains(pa_proplist *p, const char *key) {
 void pa_proplist_clear(pa_proplist *p) {
     pa_assert(p);
 
-    pa_hashmap_remove_all(MAKE_HASHMAP(p), (pa_free_cb_t) property_free);
+    pa_hashmap_remove_all(MAKE_HASHMAP(p));
 }
 
 pa_proplist* pa_proplist_copy(const pa_proplist *p) {