From 2d5cfbf4f50b8a65713f23498124ee952cf61923 Mon Sep 17 00:00:00 2001
From: SamGondelman <samuel_gondelman@alumni.brown.edu>
Date: Tue, 16 Apr 2019 15:16:26 -0700
Subject: [PATCH] fix oven crash

---
 libraries/baking/src/FBXBaker.cpp    | 7 ++++++-
 libraries/render-utils/src/Model.cpp | 8 ++++++--
 2 files changed, 12 insertions(+), 3 deletions(-)

diff --git a/libraries/baking/src/FBXBaker.cpp b/libraries/baking/src/FBXBaker.cpp
index b7eb56c921..01897ee5e9 100644
--- a/libraries/baking/src/FBXBaker.cpp
+++ b/libraries/baking/src/FBXBaker.cpp
@@ -104,13 +104,15 @@ void FBXBaker::rewriteAndBakeSceneModels(const QVector<hfm::Mesh>& meshes, const
     int meshIndex = 0;
     for (FBXNode& rootChild : _rootNode.children) {
         if (rootChild.name == "Objects") {
-            for (auto object = rootChild.children.begin(); object != rootChild.children.end(); object++) {
+            auto object = rootChild.children.begin();
+            while (object != rootChild.children.end()) {
                 if (object->name == "Geometry") {
                     if (object->properties.at(2) == "Mesh") {
                         int meshNum = meshIndexToRuntimeOrder[meshIndex];
                         replaceMeshNodeWithDraco(*object, dracoMeshes[meshNum], dracoMaterialLists[meshNum]);
                         meshIndex++;
                     }
+                    object++;
                 } else if (object->name == "Model") {
                     for (FBXNode& modelChild : object->children) {
                         if (modelChild.name == "Properties60" || modelChild.name == "Properties70") {
@@ -136,9 +138,12 @@ void FBXBaker::rewriteAndBakeSceneModels(const QVector<hfm::Mesh>& meshes, const
                             meshIndex++;
                         }
                     }
+                    object++;
                 } else if (object->name == "Texture" || object->name == "Video") {
                     // this is an embedded texture, we need to remove it from the FBX
                     object = rootChild.children.erase(object);
+                } else {
+                    object++;
                 }
 
                 if (hasErrors()) {
diff --git a/libraries/render-utils/src/Model.cpp b/libraries/render-utils/src/Model.cpp
index 2a35b0d161..e2d78a8d94 100644
--- a/libraries/render-utils/src/Model.cpp
+++ b/libraries/render-utils/src/Model.cpp
@@ -1572,9 +1572,13 @@ void Model::applyMaterialMapping() {
 
     auto& materialMapping = getMaterialMapping();
     for (auto& mapping : materialMapping) {
-        std::set<unsigned int> shapeIDs = getMeshIDsFromMaterialID(QString(mapping.first.c_str()));
         auto networkMaterialResource = mapping.second;
-        if (!networkMaterialResource || shapeIDs.size() == 0) {
+        if (!networkMaterialResource) {
+            continue;
+        }
+
+        std::set<unsigned int> shapeIDs = getMeshIDsFromMaterialID(QString(mapping.first.c_str()));
+        if (shapeIDs.size() == 0) {
             continue;
         }