chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
hashmap: return NULL from destructor
[elogind.git]
/
src
/
shared
/
hashmap.c
diff --git
a/src/shared/hashmap.c
b/src/shared/hashmap.c
index 48d75023918afadc54df0bf7597a9d38d79f485f..73937ac217358ee42e01edbeb27d43456dd5688d 100644
(file)
--- a/
src/shared/hashmap.c
+++ b/
src/shared/hashmap.c
@@
-865,38
+865,41
@@
static void hashmap_free_no_clear(HashmapBase *h) {
free(h);
}
free(h);
}
-
void
internal_hashmap_free(HashmapBase *h) {
+
HashmapBase *
internal_hashmap_free(HashmapBase *h) {
/* Free the hashmap, but nothing in it */
/* Free the hashmap, but nothing in it */
- if (!h)
- return;
+ if (h) {
+ internal_hashmap_clear(h);
+ hashmap_free_no_clear(h);
+ }
- internal_hashmap_clear(h);
- hashmap_free_no_clear(h);
+ return NULL;
}
}
-
void
internal_hashmap_free_free(HashmapBase *h) {
+
HashmapBase *
internal_hashmap_free_free(HashmapBase *h) {
/* Free the hashmap and all data objects in it, but not the
* keys */
/* Free the hashmap and all data objects in it, but not the
* keys */
- if (!h)
- return;
+ if (h) {
+ internal_hashmap_clear_free(h);
+ hashmap_free_no_clear(h);
+ }
- internal_hashmap_clear_free(h);
- hashmap_free_no_clear(h);
+ return NULL;
}
}
-
void
hashmap_free_free_free(Hashmap *h) {
+
Hashmap *
hashmap_free_free_free(Hashmap *h) {
/* Free the hashmap and all data and key objects in it */
/* Free the hashmap and all data and key objects in it */
- if (!h)
- return;
+ if (h) {
+ hashmap_clear_free_free(h);
+ hashmap_free_no_clear(HASHMAP_BASE(h));
+ }
- hashmap_clear_free_free(h);
- hashmap_free_no_clear(HASHMAP_BASE(h));
+ return NULL;
}
void internal_hashmap_clear(HashmapBase *h) {
}
void internal_hashmap_clear(HashmapBase *h) {