khash: factor out kh_release_*
Add a function for releasing the khash-internal allocations, but not the khash structure itself. It can be used with on-stack khash structs. Signed-off-by: Rene Scharfe <l.s.r@web.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
René Scharfe committed
Oct 4, 2018 at 17:10 UTC
9249ca26aca3ae3f21f812593c7a5498736ae29a
1 file changed
+7
-2
khash.h
+7
-2
@@ -82,11 +82,16 @@ static const double __ac_HASH_UPPER = 0.77;
82
SCOPE kh_##name##_t *kh_init_##name(void) { \
83
return (kh_##name##_t*)xcalloc(1, sizeof(kh_##name##_t)); \
84
} \
85
+ SCOPE void kh_release_##name(kh_##name##_t *h) \
86
+ { \
87
+ free(h->flags); \
88
+ free((void *)h->keys); \
89
+ free((void *)h->vals); \
90
+ } \
91
SCOPE void kh_destroy_##name(kh_##name##_t *h) \
92
{ \
93
if (h) { \
88
- free((void *)h->keys); free(h->flags); \
89
- free((void *)h->vals); \
94
+ kh_release_##name(h); \
95
free(h); \
96
} \
97
} \