From a84856e299f91dfcc31ba0cd397f32e2aa13711d Mon Sep 17 00:00:00 2001 From: Rusty Wagner Date: Sat, 19 Feb 2022 15:53:47 -0500 Subject: Use memory tracking API when in core for rapidjson --- rapidjson/allocators.h | 30 ++++++++++++++++++++++++++---- 1 file changed, 26 insertions(+), 4 deletions(-) (limited to 'rapidjson') 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(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(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 -- cgit v1.3.1