Merge pull request #1453 from eidosmontreal/custom_malloc
Adding a single customization point that ensures all allocations within rapidjson can be performed with a custom memory allocator
This commit is contained in:
commit
88bd956d66
@ -77,19 +77,19 @@ public:
|
|||||||
static const bool kNeedFree = true;
|
static const bool kNeedFree = true;
|
||||||
void* Malloc(size_t size) {
|
void* Malloc(size_t size) {
|
||||||
if (size) // behavior of malloc(0) is implementation defined.
|
if (size) // behavior of malloc(0) is implementation defined.
|
||||||
return std::malloc(size);
|
return RAPIDJSON_MALLOC(size);
|
||||||
else
|
else
|
||||||
return NULL; // standardize to returning NULL.
|
return NULL; // standardize to returning NULL.
|
||||||
}
|
}
|
||||||
void* Realloc(void* originalPtr, size_t originalSize, size_t newSize) {
|
void* Realloc(void* originalPtr, size_t originalSize, size_t newSize) {
|
||||||
(void)originalSize;
|
(void)originalSize;
|
||||||
if (newSize == 0) {
|
if (newSize == 0) {
|
||||||
std::free(originalPtr);
|
RAPIDJSON_FREE(originalPtr);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
return std::realloc(originalPtr, newSize);
|
return RAPIDJSON_REALLOC(originalPtr, newSize);
|
||||||
}
|
}
|
||||||
static void Free(void *ptr) { std::free(ptr); }
|
static void Free(void *ptr) { RAPIDJSON_FREE(ptr); }
|
||||||
};
|
};
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
@ -639,6 +639,22 @@ RAPIDJSON_NAMESPACE_END
|
|||||||
#endif // RAPIDJSON_ASSERT_THROWS
|
#endif // RAPIDJSON_ASSERT_THROWS
|
||||||
#endif // RAPIDJSON_NOEXCEPT_ASSERT
|
#endif // RAPIDJSON_NOEXCEPT_ASSERT
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
// malloc/realloc/free
|
||||||
|
|
||||||
|
#ifndef RAPIDJSON_MALLOC
|
||||||
|
///! customization point for global \c malloc
|
||||||
|
#define RAPIDJSON_MALLOC(size) std::malloc(size)
|
||||||
|
#endif
|
||||||
|
#ifndef RAPIDJSON_REALLOC
|
||||||
|
///! customization point for global \c realloc
|
||||||
|
#define RAPIDJSON_REALLOC(ptr, new_size) std::realloc(ptr, new_size)
|
||||||
|
#endif
|
||||||
|
#ifndef RAPIDJSON_FREE
|
||||||
|
///! customization point for global \c free
|
||||||
|
#define RAPIDJSON_FREE(ptr) std::free(ptr)
|
||||||
|
#endif
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
// new/delete
|
// new/delete
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user