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 } \