v2-0001-simplehash-Allow-raw-memory-to-be-freed.patch
text/x-patch
Filename: v2-0001-simplehash-Allow-raw-memory-to-be-freed.patch
Type: text/x-patch
Part: 0
Patch
Format: format-patch
Series: patch v2-0001
Subject: simplehash: Allow raw memory to be freed.
| File | + | − |
|---|---|---|
| src/include/lib/simplehash.h | 9 | 0 |
From 4614df55bd0e98b70b942543482e6a9eb767f718 Mon Sep 17 00:00:00 2001
From: Thomas Munro <thomas.munro@gmail.com>
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