summaryrefslogtreecommitdiff
path: root/lib/hash.h
diff options
context:
space:
mode:
authorDonald Sharp <sharpd@nvidia.com>2023-03-21 08:54:21 -0400
committerDonald Sharp <sharpd@nvidia.com>2023-03-21 08:54:21 -0400
commitd8bc11a592110abdd14d11dfcb2ce623653ecab5 (patch)
treeeee3628586497e48192f65326316f0eb91114011 /lib/hash.h
parent2e1ea892220dccb8a4c72e438cb3bbd4cac22b2b (diff)
*: Add a hash_clean_and_free() function
Add a hash_clean_and_free() function as well as convert the code to use it. This function also takes a double pointer to the hash to set it NULL. Also it cleanly does nothing if the pointer is NULL( as a bunch of code tested for ). Signed-off-by: Donald Sharp <sharpd@nvidia.com>
Diffstat (limited to 'lib/hash.h')
-rw-r--r--lib/hash.h11
1 files changed, 11 insertions, 0 deletions
diff --git a/lib/hash.h b/lib/hash.h
index f32309d804..810faf9030 100644
--- a/lib/hash.h
+++ b/lib/hash.h
@@ -278,6 +278,17 @@ extern void hash_walk(struct hash *hash,
extern void hash_clean(struct hash *hash, void (*free_func)(void *));
/*
+ * Remove all elements from a hash table and free the table,
+ * setting the pointer to NULL.
+ *
+ * hash
+ * hash table to operate on
+ * free_func
+ * function to call with each removed item, intended to free the data
+ */
+extern void hash_clean_and_free(struct hash **hash, void (*free_func)(void *));
+
+/*
* Delete a hash table.
*
* This function assumes the table is empty. Call hash_clean to delete the