summaryrefslogtreecommitdiff
path: root/rapidjson/allocators.h
diff options
context:
space:
mode:
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