diff --git a/include/rapidjson/allocators.h b/include/rapidjson/allocators.h index 16bf038..b7042a5 100644 --- a/include/rapidjson/allocators.h +++ b/include/rapidjson/allocators.h @@ -189,6 +189,9 @@ public: if (originalPtr == 0) return Malloc(newSize); + if (newSize == 0) + return NULL; + // Do not shrink if new size is smaller than original if (originalSize >= newSize) return originalPtr; diff --git a/test/unittest/allocatorstest.cpp b/test/unittest/allocatorstest.cpp index 3f33724..7b4deed 100644 --- a/test/unittest/allocatorstest.cpp +++ b/test/unittest/allocatorstest.cpp @@ -42,6 +42,9 @@ void TestAllocator(Allocator& a) { EXPECT_EQ(i, r[i]); Allocator::Free(r); + + // Realloc to zero size + EXPECT_TRUE(a.Realloc(a.Malloc(1), 1, 0) == 0); } TEST(Allocator, CrtAllocator) {