Fix null data_

This commit is contained in:
Benoit Blanchon
2025-06-26 15:23:57 +02:00
parent 242d3f2f35
commit 908a69213c

View File

@ -19,7 +19,7 @@ inline void VariantImpl::setRawString(SerializedValue<T> value) {
}
inline bool VariantImpl::setLinkedString(const char* s) {
ARDUINOJSON_ASSERT(type() == VariantType::Null); // must call clear() first
ARDUINOJSON_ASSERT(isNull()); // must call clear() first
ARDUINOJSON_ASSERT(s);
auto slotId = resources_->saveStaticString(s);
@ -33,7 +33,7 @@ inline bool VariantImpl::setLinkedString(const char* s) {
template <typename TAdaptedString>
inline bool VariantImpl::setString(TAdaptedString value) {
ARDUINOJSON_ASSERT(type() == VariantType::Null); // must call clear() first
ARDUINOJSON_ASSERT(isNull()); // must call clear() first
if (!data_)
return false;
@ -90,7 +90,10 @@ inline const char* VariantImpl::asLinkedString() const {
template <typename T>
enable_if_t<sizeof(T) == 8, bool> VariantImpl::setFloat(T value) {
ARDUINOJSON_ASSERT(type() == VariantType::Null); // must call clear() first
ARDUINOJSON_ASSERT(isNull()); // must call clear() first
if (!data_)
return false;
float valueAsFloat = static_cast<float>(value);
@ -115,7 +118,10 @@ enable_if_t<sizeof(T) == 8, bool> VariantImpl::setFloat(T value) {
template <typename T>
enable_if_t<is_signed<T>::value, bool> VariantImpl::setInteger(T value) {
ARDUINOJSON_ASSERT(type() == VariantType::Null); // must call clear() first
ARDUINOJSON_ASSERT(isNull()); // must call clear() first
if (!data_)
return false;
if (canConvertNumber<int32_t>(value)) {
data_->type = VariantType::Int32;
@ -136,7 +142,10 @@ enable_if_t<is_signed<T>::value, bool> VariantImpl::setInteger(T value) {
template <typename T>
enable_if_t<is_unsigned<T>::value, bool> VariantImpl::setInteger(T value) {
ARDUINOJSON_ASSERT(type() == VariantType::Null); // must call clear() first
ARDUINOJSON_ASSERT(isNull()); // must call clear() first
if (!data_)
return false;
if (canConvertNumber<uint32_t>(value)) {
data_->type = VariantType::Uint32;