mirror of
https://github.com/eledio-devices/thirdparty-ArduinoJson.git
synced 2025-11-01 16:14:05 +01:00
Change link() to shallowCopy() (issue #1343)
Instead of storing a pointer, the function copies the `VariantData`. Benefits: * smaller code * no impact on programs that don't use this feature Drawbacks: * changes to the original variant are not always reflected on the copy * modifying the original from the shallow copy leads to UB
This commit is contained in:
@@ -132,8 +132,8 @@ class MemberProxy : public VariantOperators<MemberProxy<TObject, TStringRef> >,
|
||||
getUpstreamMember().remove(key);
|
||||
}
|
||||
|
||||
FORCE_INLINE void link(VariantConstRef value) {
|
||||
getOrAddUpstreamMember().link(value);
|
||||
FORCE_INLINE void shallowCopy(VariantConstRef value) {
|
||||
getOrAddUpstreamMember().shallowCopy(value);
|
||||
}
|
||||
|
||||
template <typename TValue>
|
||||
|
||||
@@ -269,12 +269,12 @@ struct Converter<ObjectConstRef> {
|
||||
|
||||
static ObjectConstRef fromJson(VariantConstRef src) {
|
||||
const VariantData* data = getData(src);
|
||||
return data != 0 ? data->resolve()->asObject() : 0;
|
||||
return data != 0 ? data->asObject() : 0;
|
||||
}
|
||||
|
||||
static bool checkJson(VariantConstRef src) {
|
||||
const VariantData* data = getData(src);
|
||||
return data && data->resolve()->isObject();
|
||||
return data && data->isObject();
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user