diff --git a/include/rapidjson/allocators.h b/include/rapidjson/allocators.h index d68b74c..16bf038 100644 --- a/include/rapidjson/allocators.h +++ b/include/rapidjson/allocators.h @@ -68,7 +68,14 @@ public: else return NULL; // standardize to returning NULL. } - void* Realloc(void* originalPtr, size_t originalSize, size_t newSize) { (void)originalSize; return std::realloc(originalPtr, newSize); } + void* Realloc(void* originalPtr, size_t originalSize, size_t newSize) { + (void)originalSize; + if (newSize == 0) { + std::free(originalPtr); + return NULL; + } + return std::realloc(originalPtr, newSize); + } static void Free(void *ptr) { std::free(ptr); } }; diff --git a/test/unittest/documenttest.cpp b/test/unittest/documenttest.cpp index 71cd777..7e5d766 100644 --- a/test/unittest/documenttest.cpp +++ b/test/unittest/documenttest.cpp @@ -146,6 +146,7 @@ TEST(Document, ParseStream_EncodedInputStream) { StringBuffer bos2; Writer writer(bos2); reader.Parse(is, writer); + fclose(fp); EXPECT_EQ(bos.GetSize(), bos2.GetSize()); EXPECT_EQ(0, memcmp(bos.GetString(), bos2.GetString(), bos2.GetSize())); @@ -184,6 +185,7 @@ TEST(Document, ParseStream_AutoUTFInputStream) { StringBuffer bos2; Writer writer(bos2); reader.Parse(is, writer); + fclose(fp); EXPECT_EQ(bos.GetSize(), bos2.GetSize()); EXPECT_EQ(0, memcmp(bos.GetString(), bos2.GetString(), bos2.GetSize()));