From c70a491f59ba602625f699cf8e2f89ad85d5f23b Mon Sep 17 00:00:00 2001 From: Benoit Blanchon Date: Wed, 27 Jan 2021 09:59:51 +0100 Subject: [PATCH] Made JsonDocument's destructor protected (fixes #1480) --- CHANGELOG.md | 5 +++++ extras/tests/FailingBuilds/CMakeLists.txt | 3 +++ extras/tests/FailingBuilds/delete_jsondocument.cpp | 12 ++++++++++++ src/ArduinoJson/Document/JsonDocument.hpp | 2 ++ 4 files changed, 22 insertions(+) create mode 100644 extras/tests/FailingBuilds/delete_jsondocument.cpp 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; }