From 4614df55bd0e98b70b942543482e6a9eb767f718 Mon Sep 17 00:00:00 2001 From: Thomas Munro Date: Wed, 1 Nov 2023 05:53:12 +1300 Subject: [PATCH v2 1/6] simplehash: Allow raw memory to be freed. Commit 48995040d5e introduced SH_RAW_ALLOCATOR, but assumed that memory allocated that way could be freed with pfree(). Allow SH_RAW_FREE to be defined too, for cases where that isn't true. --- src/include/lib/simplehash.h | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/include/lib/simplehash.h b/src/include/lib/simplehash.h index b7adc16b80..cd354e2f11 100644 --- a/src/include/lib/simplehash.h +++ b/src/include/lib/simplehash.h @@ -42,6 +42,7 @@ * declarations reside * - SH_RAW_ALLOCATOR - if defined, memory contexts are not used; instead, * use this to allocate bytes. The allocator must zero the returned space. + * - SH_RAW_FREE - free operation corresponding to SH_RAW_ALLOCATOR * - SH_USE_NONDEFAULT_ALLOCATOR - if defined no element allocator functions * are defined, so you can supply your own * The following parameters are only relevant when SH_DEFINE is defined: @@ -410,7 +411,11 @@ SH_ALLOCATE(SH_TYPE * type, Size size) static inline void SH_FREE(SH_TYPE * type, void *pointer) { +#ifdef SH_RAW_FREE + SH_RAW_FREE(pointer); +#else pfree(pointer); +#endif } #endif @@ -458,7 +463,11 @@ SH_SCOPE void SH_DESTROY(SH_TYPE * tb) { SH_FREE(tb, tb->data); +#ifdef SH_RAW_FREE + SH_RAW_FREE(tb); +#else pfree(tb); +#endif } /* reset the contents of a previously created hash table */ -- 2.42.0