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....@web.de>
---
1 tab = 4 spaces here.

 khash.h | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/khash.h b/khash.h
index 07b4cc2e67..d10caa0c35 100644
--- a/khash.h
+++ b/khash.h
@@ -82,11 +82,16 @@ static const double __ac_HASH_UPPER = 0.77;
        SCOPE kh_##name##_t *kh_init_##name(void) {                             
                        \
                return (kh_##name##_t*)xcalloc(1, sizeof(kh_##name##_t));       
        \
        }                                                                       
                                                                \
+       SCOPE void kh_release_##name(kh_##name##_t *h)                          
                \
+       {                                                                       
                                                                \
+               free(h->flags);                                                 
                                                \
+               free((void *)h->keys);                                          
                                        \
+               free((void *)h->vals);                                          
                                        \
+       }                                                                       
                                                                \
        SCOPE void kh_destroy_##name(kh_##name##_t *h)                          
                \
        {                                                                       
                                                                \
                if (h) {                                                        
                                                        \
-                       free((void *)h->keys); free(h->flags);                  
                \
-                       free((void *)h->vals);                                  
                                        \
+                       kh_release_##name(h);                                   
                                        \
                        free(h);                                                
                                                        \
                }                                                               
                                                                \
        }                                                                       
                                                                \
-- 
2.19.0

Reply via email to