From 22e4f216c388cc414e84320242dcff7ac00ba0b7 Mon Sep 17 00:00:00 2001 From: Benoit Blanchon Date: Fri, 7 Apr 2023 18:27:29 +0200 Subject: [PATCH] Tests: allow ArmoredAllocator to be called multiple times --- extras/tests/JsonDocument/shrinkToFit.cpp | 20 ++++---------------- 1 file changed, 4 insertions(+), 16 deletions(-) diff --git a/extras/tests/JsonDocument/shrinkToFit.cpp b/extras/tests/JsonDocument/shrinkToFit.cpp index 9e36ef78..bc25f8e9 100644 --- a/extras/tests/JsonDocument/shrinkToFit.cpp +++ b/extras/tests/JsonDocument/shrinkToFit.cpp @@ -16,37 +16,25 @@ using ArduinoJson::detail::sizeofString; class ArmoredAllocator : public Allocator { public: - ArmoredAllocator() : _ptr(0), _size(0) {} virtual ~ArmoredAllocator() {} void* allocate(size_t size) override { - _ptr = malloc(size); - _size = size; - return _ptr; + return malloc(size); } void deallocate(void* ptr) override { - REQUIRE(ptr == _ptr); free(ptr); - _ptr = 0; - _size = 0; } void* reallocate(void* ptr, size_t new_size) override { - REQUIRE(ptr == _ptr); // don't call realloc, instead alloc a new buffer and erase the old one // this way we make sure we support relocation void* new_ptr = malloc(new_size); - memcpy(new_ptr, _ptr, std::min(new_size, _size)); - memset(_ptr, '#', _size); // erase - free(_ptr); - _ptr = new_ptr; + memset(new_ptr, '#', new_size); // erase + memcpy(new_ptr, ptr, std::min(new_size, new_size)); + free(ptr); return new_ptr; } - - private: - void* _ptr; - size_t _size; }; TEST_CASE("JsonDocument::shrinkToFit()") {