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";