Skip to content

Commit 908a692

Browse files
committed
Fix null data_
1 parent 242d3f2 commit 908a692

File tree

1 file changed

+14
-5
lines changed

1 file changed

+14
-5
lines changed

src/ArduinoJson/Variant/VariantImpl.hpp

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ inline void VariantImpl::setRawString(SerializedValue<T> value) {
1919
}
2020

2121
inline bool VariantImpl::setLinkedString(const char* s) {
22-
ARDUINOJSON_ASSERT(type() == VariantType::Null); // must call clear() first
22+
ARDUINOJSON_ASSERT(isNull()); // must call clear() first
2323
ARDUINOJSON_ASSERT(s);
2424

2525
auto slotId = resources_->saveStaticString(s);
@@ -33,7 +33,7 @@ inline bool VariantImpl::setLinkedString(const char* s) {
3333

3434
template <typename TAdaptedString>
3535
inline bool VariantImpl::setString(TAdaptedString value) {
36-
ARDUINOJSON_ASSERT(type() == VariantType::Null); // must call clear() first
36+
ARDUINOJSON_ASSERT(isNull()); // must call clear() first
3737

3838
if (!data_)
3939
return false;
@@ -90,7 +90,10 @@ inline const char* VariantImpl::asLinkedString() const {
9090

9191
template <typename T>
9292
enable_if_t<sizeof(T) == 8, bool> VariantImpl::setFloat(T value) {
93-
ARDUINOJSON_ASSERT(type() == VariantType::Null); // must call clear() first
93+
ARDUINOJSON_ASSERT(isNull()); // must call clear() first
94+
95+
if (!data_)
96+
return false;
9497

9598
float valueAsFloat = static_cast<float>(value);
9699

@@ -115,7 +118,10 @@ enable_if_t<sizeof(T) == 8, bool> VariantImpl::setFloat(T value) {
115118

116119
template <typename T>
117120
enable_if_t<is_signed<T>::value, bool> VariantImpl::setInteger(T value) {
118-
ARDUINOJSON_ASSERT(type() == VariantType::Null); // must call clear() first
121+
ARDUINOJSON_ASSERT(isNull()); // must call clear() first
122+
123+
if (!data_)
124+
return false;
119125

120126
if (canConvertNumber<int32_t>(value)) {
121127
data_->type = VariantType::Int32;
@@ -136,7 +142,10 @@ enable_if_t<is_signed<T>::value, bool> VariantImpl::setInteger(T value) {
136142

137143
template <typename T>
138144
enable_if_t<is_unsigned<T>::value, bool> VariantImpl::setInteger(T value) {
139-
ARDUINOJSON_ASSERT(type() == VariantType::Null); // must call clear() first
145+
ARDUINOJSON_ASSERT(isNull()); // must call clear() first
146+
147+
if (!data_)
148+
return false;
140149

141150
if (canConvertNumber<uint32_t>(value)) {
142151
data_->type = VariantType::Uint32;

0 commit comments

Comments
 (0)