diff --git a/CHANGELOG.md b/CHANGELOG.md index bfcf180e..f6ef04d3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,11 @@ ArduinoJson: change log ======================= +HEAD +---- + +* Made `JsonDocument`'s destructor protected (issue #1480) + v6.17.2 (2020-11-14) ------- diff --git a/extras/tests/FailingBuilds/CMakeLists.txt b/extras/tests/FailingBuilds/CMakeLists.txt index a62c3089..20bb4b90 100644 --- a/extras/tests/FailingBuilds/CMakeLists.txt +++ b/extras/tests/FailingBuilds/CMakeLists.txt @@ -36,3 +36,6 @@ build_should_fail(read_long_long) add_executable(write_long_long write_long_long.cpp) set_property(TARGET write_long_long PROPERTY CXX_STANDARD 11) build_should_fail(write_long_long) + +add_executable(delete_jsondocument delete_jsondocument.cpp) +build_should_fail(delete_jsondocument) diff --git a/extras/tests/FailingBuilds/delete_jsondocument.cpp b/extras/tests/FailingBuilds/delete_jsondocument.cpp new file mode 100644 index 00000000..9a1ae3c0 --- /dev/null +++ b/extras/tests/FailingBuilds/delete_jsondocument.cpp @@ -0,0 +1,12 @@ +// ArduinoJson - arduinojson.org +// Copyright Benoit Blanchon 2014-2021 +// MIT License + +#include + +struct Stream {}; + +int main() { + JsonDocument* doc = new DynamicJsonDocument(42); + delete doc; +} diff --git a/src/ArduinoJson/Document/JsonDocument.hpp b/src/ArduinoJson/Document/JsonDocument.hpp index 6c4b5540..4c5d527d 100644 --- a/src/ArduinoJson/Document/JsonDocument.hpp +++ b/src/ArduinoJson/Document/JsonDocument.hpp @@ -310,6 +310,8 @@ class JsonDocument : public Visitable { _data.setNull(); } + ~JsonDocument() {} + void replacePool(MemoryPool pool) { _pool = pool; }