@@ -19,7 +19,7 @@ inline void VariantImpl::setRawString(SerializedValue<T> value) {
1919}
2020
2121inline 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
3434template <typename TAdaptedString>
3535inline 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
9191template <typename T>
9292enable_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
116119template <typename T>
117120enable_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
137143template <typename T>
138144enable_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