diff options
| -rw-r--r-- | map.c | 14 | ||||
| -rw-r--r-- | map.h | 2 |
2 files changed, 16 insertions, 0 deletions
@@ -324,3 +324,17 @@ void map_free(Map *map) map_clear(map); free(map); } + +static bool free_elem(const char *key, void *value, void *data) +{ + free(value); + return true; +} + +void map_free_full(Map *map) +{ + if (!map) + return; + map_iterate(map, free_elem, NULL); + map_free(map); +} @@ -35,5 +35,7 @@ bool map_empty(const Map*); void map_clear(Map*); /* Release all memory associated with this map */ void map_free(Map*); +/* Call free(3) for every pointer stored in the map, then free the map itself */ +void map_free_full(Map*); #endif |
