summaryrefslogtreecommitdiff
path: root/rapidjson/allocators.h
diff options
context:
space:
mode:
authorRusty Wagner <rusty.wagner@gmail.com>2022-02-19 15:53:47 -0500
committerRusty Wagner <rusty.wagner@gmail.com>2022-03-11 20:28:57 -0500
commita84856e299f91dfcc31ba0cd397f32e2aa13711d (patch)
treea8f5df97dc6333ec740a133d602ba09ba36776ea /rapidjson/allocators.h
parentc7ffb77e1fdc2e9bc7a2de27c2feddf15e8b54ea (diff)
Use memory tracking API when in core for rapidjson
Diffstat (limited to 'rapidjson/allocators.h')
-rw-r--r--rapidjson/allocators.h30
1 files changed, 26 insertions, 4 deletions
diff --git a/rapidjson/allocators.h b/rapidjson/allocators.h
index 68fc35d1..663c62de 100644
--- a/rapidjson/allocators.h
+++ b/rapidjson/allocators.h
@@ -59,25 +59,47 @@ concept Allocator {
/*! This class is just wrapper for standard C library memory routines.
\note implements Allocator concept
*/
+#ifdef BINARYNINJACORE_LIBRARY
class CrtAllocator {
public:
static const bool kNeedFree = true;
void* Malloc(size_t size) {
if (size) // behavior of malloc(0) is implementation defined.
- return je_malloc(size);
+ return BinaryNinjaCore::bn_malloc<CrtAllocator>(size);
else
return NULL; // standardize to returning NULL.
}
void* Realloc(void* originalPtr, size_t originalSize, size_t newSize) {
(void)originalSize;
if (newSize == 0) {
- je_free(originalPtr);
+ BinaryNinjaCore::bn_free(originalPtr);
return NULL;
}
- return je_realloc(originalPtr, newSize);
+ return BinaryNinjaCore::bn_realloc<CrtAllocator>(originalPtr, newSize);
}
- static void Free(void *ptr) { je_free(ptr); }
+ static void Free(void* ptr) { BinaryNinjaCore::bn_free(ptr); }
};
+#else
+class CrtAllocator {
+public:
+ static const bool kNeedFree = true;
+ void* Malloc(size_t size) {
+ if (size) // behavior of malloc(0) is implementation defined.
+ return malloc(size);
+ else
+ return NULL; // standardize to returning NULL.
+ }
+ void* Realloc(void* originalPtr, size_t originalSize, size_t newSize) {
+ (void)originalSize;
+ if (newSize == 0) {
+ free(originalPtr);
+ return NULL;
+ }
+ return realloc(originalPtr, newSize);
+ }
+ static void Free(void* ptr) { free(ptr); }
+};
+#endif
///////////////////////////////////////////////////////////////////////////////
// MemoryPoolAllocator