Skip to content

Commit 04823fd

Browse files
committed
JsonDocument: fix double clear in to<T>()
1 parent 3f62a2c commit 04823fd

File tree

4 files changed

+25
-41
lines changed

4 files changed

+25
-41
lines changed

src/ArduinoJson/Document/JsonDocument.hpp

Lines changed: 25 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
#include <ArduinoJson/Object/MemberProxy.hpp>
1212
#include <ArduinoJson/Polyfills/utility.hpp>
1313
#include <ArduinoJson/Variant/JsonVariantConst.hpp>
14-
#include <ArduinoJson/Variant/VariantTo.hpp>
1514

1615
ARDUINOJSON_BEGIN_PUBLIC_NAMESPACE
1716

@@ -152,12 +151,33 @@ class JsonDocument : public detail::VariantOperators<const JsonDocument&> {
152151
return to<JsonVariant>().set(src);
153152
}
154153

155-
// Clears the document and converts it to the specified type.
154+
// Sets the document to an empty array.
156155
// https://arduinojson.org/v7/api/jsondocument/to/
157-
template <typename T>
158-
typename detail::VariantTo<T>::type to() {
156+
template <typename T,
157+
detail::enable_if_t<detail::is_same<T, JsonArray>::value, int> = 0>
158+
JsonArray to() {
159+
clear();
160+
data_.toArray();
161+
return JsonArray(&data_, &resources_);
162+
}
163+
164+
// Sets the document to an empty object.
165+
// https://arduinojson.org/v7/api/jsondocument/to/
166+
template <typename T,
167+
detail::enable_if_t<detail::is_same<T, JsonObject>::value, int> = 0>
168+
JsonObject to() {
159169
clear();
160-
return getVariant().template to<T>();
170+
data_.toObject();
171+
return JsonObject(&data_, &resources_);
172+
}
173+
174+
// Sets the document to null.
175+
// https://arduinojson.org/v7/api/jsondocument/to/
176+
template <typename T, detail::enable_if_t<
177+
detail::is_same<T, JsonVariant>::value, int> = 0>
178+
JsonVariant to() {
179+
clear();
180+
return JsonVariant(&data_, &resources_);
161181
}
162182

163183
// DEPRECATED: use obj["key"].is<T>() instead

src/ArduinoJson/Variant/VariantAttorney.hpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
#include <ArduinoJson/Polyfills/attributes.hpp>
88
#include <ArduinoJson/Polyfills/type_traits.hpp>
99
#include <ArduinoJson/Variant/VariantImpl.hpp>
10-
#include <ArduinoJson/Variant/VariantTo.hpp>
1110
#include "JsonVariantConst.hpp"
1211

1312
ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE

src/ArduinoJson/Variant/VariantRefBase.hpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
#include <ArduinoJson/Variant/Converter.hpp>
99
#include <ArduinoJson/Variant/JsonVariantConst.hpp>
1010
#include <ArduinoJson/Variant/VariantOperators.hpp>
11-
#include <ArduinoJson/Variant/VariantTo.hpp>
1211

1312
ARDUINOJSON_BEGIN_PUBLIC_NAMESPACE
1413
class JsonVariant;

src/ArduinoJson/Variant/VariantTo.hpp

Lines changed: 0 additions & 34 deletions
This file was deleted.

0 commit comments

Comments
 (0)