diff --git a/src/serializationmanager.cpp b/src/serializationmanager.cpp index 7fa452a..7b4e111 100644 --- a/src/serializationmanager.cpp +++ b/src/serializationmanager.cpp @@ -317,11 +317,10 @@ std::istream& ObjectLoader::loadAscii(std::istream& is) } else if(p->getPropertyType() == AbstractProperty::ARRAY && ((AbstractArrayProperty*)p)->getDataType() == AbstractProperty::REFERENCE) { - std::vector &vecRef = ((ArrayProperty*)p)->getValueRef(); + int nbRef = 0; ss.ignore(1); // [ while(ss.peek() != ']') { - vecRef.push_back(nullptr); if(ss.peek() == '{') { ss.ignore(1); // { @@ -332,7 +331,7 @@ std::istream& ObjectLoader::loadAscii(std::istream& is) id.loadAscii(ss); ss.ignore(1); // } PendingReference ref; - ref.ptr = &(vecRef.back()); + ++nbRef; ref.type = type.getValueRef(); ref.id = id.getValueRef(); m_references.push_back(ref); @@ -341,6 +340,12 @@ std::istream& ObjectLoader::loadAscii(std::istream& is) ss.ignore(6); // "null" if(ss.peek() == ',') ss.ignore(1); // , + + std::vector &vecPtrs = ((ArrayProperty*)p)->getValueRef(); + vecPtrs = std::vector(nbRef, nullptr); + int begin = m_references.size() - nbRef; + for(int i=0; i