diff --git a/extras/tests/JsonVariant/misc.cpp b/extras/tests/JsonVariant/misc.cpp index 91489f96..7089f640 100644 --- a/extras/tests/JsonVariant/misc.cpp +++ b/extras/tests/JsonVariant/misc.cpp @@ -5,6 +5,11 @@ #include #include +TEST_CASE("VariantData") { + REQUIRE(std::is_standard_layout::value == + true); +} + TEST_CASE("JsonVariant from JsonArray") { SECTION("JsonArray is null") { JsonArray arr; diff --git a/extras/tests/Numbers/parseNumber.cpp b/extras/tests/Numbers/parseNumber.cpp index 35221513..48163c15 100644 --- a/extras/tests/Numbers/parseNumber.cpp +++ b/extras/tests/Numbers/parseNumber.cpp @@ -10,8 +10,6 @@ using namespace ArduinoJson::detail; TEST_CASE("Test unsigned integer overflow") { VariantData first, second; - first.init(); - second.init(); // Avoids MSVC warning C4127 (conditional expression is constant) size_t integerSize = sizeof(JsonInteger); @@ -30,8 +28,6 @@ TEST_CASE("Test unsigned integer overflow") { TEST_CASE("Test signed integer overflow") { VariantData first, second; - first.init(); - second.init(); // Avoids MSVC warning C4127 (conditional expression is constant) size_t integerSize = sizeof(JsonInteger); @@ -50,7 +46,6 @@ TEST_CASE("Test signed integer overflow") { TEST_CASE("Invalid value") { VariantData result; - result.init(); parseNumber("6a3", result); diff --git a/src/ArduinoJson/Document/JsonDocument.hpp b/src/ArduinoJson/Document/JsonDocument.hpp index 301fa7ba..32dea8df 100644 --- a/src/ArduinoJson/Document/JsonDocument.hpp +++ b/src/ArduinoJson/Document/JsonDocument.hpp @@ -41,7 +41,7 @@ class JsonDocument : public detail::VariantOperators { // https://arduinojson.org/v6/api/jsondocument/clear/ void clear() { _pool.clear(); - _data.init(); + _data.setNull(); } // Returns true if the root is of the specified type. @@ -277,17 +277,11 @@ class JsonDocument : public detail::VariantOperators { } protected: - JsonDocument() : _pool(0, 0) { - _data.init(); - } + JsonDocument() : _pool(0, 0) {} - JsonDocument(detail::MemoryPool pool) : _pool(pool) { - _data.init(); - } + JsonDocument(detail::MemoryPool pool) : _pool(pool) {} - JsonDocument(char* buf, size_t capa) : _pool(buf, capa) { - _data.init(); - } + JsonDocument(char* buf, size_t capa) : _pool(buf, capa) {} ~JsonDocument() {} diff --git a/src/ArduinoJson/Numbers/parseNumber.hpp b/src/ArduinoJson/Numbers/parseNumber.hpp index 660f4287..4cec1a69 100644 --- a/src/ArduinoJson/Numbers/parseNumber.hpp +++ b/src/ArduinoJson/Numbers/parseNumber.hpp @@ -146,7 +146,6 @@ inline bool parseNumber(const char* s, VariantData& result) { template inline T parseNumber(const char* s) { VariantData value; - value.init(); // VariantData is a POD, so it has no constructor parseNumber(s, value); return Converter::fromJson(JsonVariantConst(&value)); } diff --git a/src/ArduinoJson/Variant/VariantData.hpp b/src/ArduinoJson/Variant/VariantData.hpp index ff03b4d9..92d6fc64 100644 --- a/src/ArduinoJson/Variant/VariantData.hpp +++ b/src/ArduinoJson/Variant/VariantData.hpp @@ -11,16 +11,6 @@ #include #include -// VariantData can't have a constructor (to be a POD), so we have no way to fix -// this warning -#if defined(__GNUC__) -# if __GNUC__ >= 7 -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wmaybe-uninitialized" -# pragma GCC diagnostic ignored "-Wuninitialized" -# endif -#endif - ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE class VariantData { @@ -28,14 +18,7 @@ class VariantData { uint8_t _flags; public: - // Must be a POD! - // - no constructor - // - no destructor - // - no virtual - // - no inheritance - void init() { - _flags = VALUE_IS_NULL; - } + VariantData() : _flags(VALUE_IS_NULL) {} void operator=(const VariantData& src) { _content = src._content; @@ -337,9 +320,3 @@ class VariantData { }; ARDUINOJSON_END_PRIVATE_NAMESPACE - -#if defined(__GNUC__) -# if __GNUC__ >= 8 -# pragma GCC diagnostic pop -# endif -#endif