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:
Benoit Blanchon
2022-07-05 17:07:43 +02:00
parent 3b3ab8c4e1
commit cd8373ad32
36 changed files with 78 additions and 543 deletions

View File

@@ -56,7 +56,7 @@ class MsgPackSerializer : public Visitor<size_t> {
writeInteger(uint32_t(n));
}
for (const VariantSlot* slot = array.head(); slot; slot = slot->next()) {
slot->data()->resolve()->accept(*this);
slot->data()->accept(*this);
}
return bytesWritten();
}
@@ -74,7 +74,7 @@ class MsgPackSerializer : public Visitor<size_t> {
}
for (const VariantSlot* slot = object.head(); slot; slot = slot->next()) {
visitString(slot->key());
slot->data()->resolve()->accept(*this);
slot->data()->accept(*this);
}
return bytesWritten();
}