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