Fix proxy serialisation of SDObject to set parent pointer correctly

This commit is contained in:
baldurk
2020-10-28 11:56:38 +00:00
parent 0a56df5af2
commit 6b67a6c13b
2 changed files with 18 additions and 0 deletions
+6
View File
@@ -920,6 +920,12 @@ private:
SDObject *m_Parent = NULL;
mutable LazyArrayData *m_Lazy = NULL;
// object serialisers need to be able to set the parent pointer. This is only for proxying really
template <class SerialiserType>
friend void DoSerialise(SerialiserType &ser, SDObject &el);
template <class SerialiserType>
friend void DoSerialise(SerialiserType &ser, SDChunk &el);
void DeleteLazyGenerator() const
{
if(m_Lazy)
+12
View File
@@ -718,6 +718,12 @@ void DoSerialise(SerialiserType &ser, SDObject &el)
SERIALISE_MEMBER(name);
SERIALISE_MEMBER(type);
SERIALISE_MEMBER(data);
if(ser.IsReading())
{
for(size_t i = 0; i < el.NumChildren(); i++)
el.GetChild(i)->m_Parent = &el;
}
}
template <class SerialiserType>
@@ -727,6 +733,12 @@ void DoSerialise(SerialiserType &ser, SDChunk &el)
SERIALISE_MEMBER(type);
SERIALISE_MEMBER(data);
SERIALISE_MEMBER(metadata);
if(ser.IsReading())
{
for(size_t i = 0; i < el.NumChildren(); i++)
el.GetChild(i)->m_Parent = &el;
}
}
INSTANTIATE_SERIALISE_TYPE(SDChunk);