From 2d71ec1c7581fb6ddb44e8f13b34ce5704e9ed31 Mon Sep 17 00:00:00 2001 From: Roxanne Skelly <roxanne@roxiware.com> Date: Tue, 2 Apr 2019 13:19:06 -0700 Subject: [PATCH 1/2] Case20410 Automatic Content Archives doesn't restore correctly with old Tutorial content set The tutorial content set had a content set Id of Null, which caused a failure to parse the content set. --- domain-server/src/DomainServer.cpp | 2 +- libraries/octree/src/OctreeEntitiesFileParser.cpp | 13 +++++++++++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/domain-server/src/DomainServer.cpp b/domain-server/src/DomainServer.cpp index 5f82700e9c..400dc3642d 100644 --- a/domain-server/src/DomainServer.cpp +++ b/domain-server/src/DomainServer.cpp @@ -1734,7 +1734,7 @@ void DomainServer::processOctreeDataPersistMessage(QSharedPointer<ReceivedMessag f.write(data); OctreeUtils::RawEntityData entityData; if (entityData.readOctreeDataInfoFromData(data)) { - qCDebug(domain_server) << "Wrote new entities file" << entityData.id << entityData.version; + qCDebug(domain_server) << "Wrote new entities file" << entityData.id << entityData.dataVersion; } else { qCDebug(domain_server) << "Failed to read new octree data info"; } diff --git a/libraries/octree/src/OctreeEntitiesFileParser.cpp b/libraries/octree/src/OctreeEntitiesFileParser.cpp index 2f03eda286..8e3fc76e2c 100644 --- a/libraries/octree/src/OctreeEntitiesFileParser.cpp +++ b/libraries/octree/src/OctreeEntitiesFileParser.cpp @@ -97,7 +97,7 @@ bool OctreeEntitiesFileParser::parseEntities(QVariantMap& parsedEntities) { _errorString = "Duplicate Id entries"; return false; } - + gotId = true; if (nextToken() != '"') { _errorString = "Invalid Id value"; return false; @@ -107,6 +107,16 @@ bool OctreeEntitiesFileParser::parseEntities(QVariantMap& parsedEntities) { _errorString = "Invalid Id string"; return false; } + + if (idString == "{00000000-0000-0000-0000-000000000000}") { + // some older archives may have a null string id, so + // return success without setting parsedEntities, + // which will result in a new uuid for the restored + // archive. (not parsing and using isNull as parsing + // results in null if there is a corrupt string) + return true; + } + QUuid idValue = QUuid::fromString(QLatin1String(idString.c_str()) ); if (idValue.isNull()) { _errorString = "Id value invalid UUID string: " + idString; @@ -114,7 +124,6 @@ bool OctreeEntitiesFileParser::parseEntities(QVariantMap& parsedEntities) { } parsedEntities["Id"] = idValue; - gotId = true; } else if (key == "Version") { if (gotVersion) { _errorString = "Duplicate Version entries"; From ac97a82badc5ed679c650f4a6399e5863fec41a6 Mon Sep 17 00:00:00 2001 From: Roxanne Skelly <roxanne@roxiware.com> Date: Tue, 2 Apr 2019 17:25:00 -0700 Subject: [PATCH 2/2] Address a CR comment. --- .../octree/src/OctreeEntitiesFileParser.cpp | 26 +++++++++---------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/libraries/octree/src/OctreeEntitiesFileParser.cpp b/libraries/octree/src/OctreeEntitiesFileParser.cpp index 8e3fc76e2c..e82201adfd 100644 --- a/libraries/octree/src/OctreeEntitiesFileParser.cpp +++ b/libraries/octree/src/OctreeEntitiesFileParser.cpp @@ -108,22 +108,20 @@ bool OctreeEntitiesFileParser::parseEntities(QVariantMap& parsedEntities) { return false; } - if (idString == "{00000000-0000-0000-0000-000000000000}") { - // some older archives may have a null string id, so - // return success without setting parsedEntities, - // which will result in a new uuid for the restored - // archive. (not parsing and using isNull as parsing - // results in null if there is a corrupt string) - return true; - } + // some older archives may have a null string id, so + // return success without setting parsedEntities, + // which will result in a new uuid for the restored + // archive. (not parsing and using isNull as parsing + // results in null if there is a corrupt string) - QUuid idValue = QUuid::fromString(QLatin1String(idString.c_str()) ); - if (idValue.isNull()) { - _errorString = "Id value invalid UUID string: " + idString; - return false; + if (idString != "{00000000-0000-0000-0000-000000000000}") { + QUuid idValue = QUuid::fromString(QLatin1String(idString.c_str()) ); + if (idValue.isNull()) { + _errorString = "Id value invalid UUID string: " + idString; + return false; + } + parsedEntities["Id"] = idValue; } - - parsedEntities["Id"] = idValue; } else if (key == "Version") { if (gotVersion) { _errorString = "Duplicate Version entries";