mirror of
https://github.com/eledio-devices/thirdparty-ArduinoJson.git
synced 2025-11-01 00:38:27 +01:00
asObject() ignores pointers (6814,5626)
This commit is contained in:
@@ -264,7 +264,9 @@ struct Converter<ObjectRef> {
|
||||
static ObjectRef fromJson(VariantRef src) {
|
||||
VariantData* data = getData(src);
|
||||
MemoryPool* pool = getPool(src);
|
||||
return ObjectRef(pool, data != 0 ? data->asObject() : 0);
|
||||
if (!data)
|
||||
return ObjectRef();
|
||||
return ObjectRef(pool, data->asObject());
|
||||
}
|
||||
|
||||
static InvalidConversion<VariantConstRef, ObjectRef> fromJson(
|
||||
|
||||
@@ -108,8 +108,6 @@ class VariantData {
|
||||
}
|
||||
|
||||
const CollectionData *asObject() const {
|
||||
if (isPointer()) // P+20 G+0
|
||||
return _content.asPointer->asObject();
|
||||
return const_cast<VariantData *>(this)->asObject();
|
||||
}
|
||||
|
||||
@@ -321,7 +319,7 @@ class VariantData {
|
||||
|
||||
template <typename TAdaptedString>
|
||||
VariantData *getMember(TAdaptedString key) const { // P+4 G+0
|
||||
const CollectionData *col = asObject();
|
||||
const CollectionData *col = resolve()->asObject();
|
||||
return col ? col->getMember(key) : 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@ inline const CollectionData *variantAsArray(const VariantData *var) {
|
||||
}
|
||||
|
||||
inline const CollectionData *variantAsObject(const VariantData *var) {
|
||||
return var != 0 ? var->asObject() : 0;
|
||||
return var != 0 ? var->resolve()->asObject() : 0;
|
||||
}
|
||||
|
||||
inline CollectionData *variantAsObject(VariantData *var) {
|
||||
|
||||
Reference in New Issue
Block a user