X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Fshared%2Fhashmap.c;h=ab00957306e9fb2fdb2d8e1b0e63263368973e07;hp=5d1e63208a64648c8b8e11b8bd380874d607dfb0;hb=9946996cda11a18b44d82344676e5a0e96339408;hpb=f6c13ce47ebee287f8b6a965ca5ca022a9f26e2c diff --git a/src/shared/hashmap.c b/src/shared/hashmap.c index 5d1e63208..ab0095730 100644 --- a/src/shared/hashmap.c +++ b/src/shared/hashmap.c @@ -277,11 +277,7 @@ void hashmap_free(Hashmap*h) { } void hashmap_free_free(Hashmap *h) { - void *p; - - while ((p = hashmap_steal_first(h))) - free(p); - + hashmap_clear_free(h); hashmap_free(h); } @@ -293,6 +289,15 @@ void hashmap_clear(Hashmap *h) { remove_entry(h, h->iterate_list_head); } +void hashmap_clear_free(Hashmap *h) { + void *p; + + assert(h); + + while ((p = hashmap_steal_first(h))) + free(p); +} + static struct hashmap_entry *hash_scan(Hashmap *h, unsigned hash, const void *key) { struct hashmap_entry *e; assert(h);