Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMitchell Stokes <mogurijin@gmail.com>2014-05-14 02:50:28 +0400
committerMitchell Stokes <mogurijin@gmail.com>2014-05-14 02:52:07 +0400
commit23b682d5948e98264340e6dc81237b81d299b5b0 (patch)
treecd77d22c248499771fa6e9e3915536c4540efa23 /source/gameengine/Converter/KX_BlenderSceneConverter.cpp
parent1d1560eec45b18d964155277384e1532e22677d1 (diff)
Fix T40172: LibFree() crashes with shared materials (e.g., from multiple LibNew() calls)
Diffstat (limited to 'source/gameengine/Converter/KX_BlenderSceneConverter.cpp')
-rw-r--r--source/gameengine/Converter/KX_BlenderSceneConverter.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/source/gameengine/Converter/KX_BlenderSceneConverter.cpp b/source/gameengine/Converter/KX_BlenderSceneConverter.cpp
index 5930d5e90d2..7d7f8ebd4b3 100644
--- a/source/gameengine/Converter/KX_BlenderSceneConverter.cpp
+++ b/source/gameengine/Converter/KX_BlenderSceneConverter.cpp
@@ -1237,6 +1237,16 @@ bool KX_BlenderSceneConverter::FreeBlendFile(struct Main *maggie)
gameobj->RemoveMeshes(); /* XXX - slack, should only remove meshes that are library items but mostly objects only have 1 mesh */
break;
}
+ else {
+ /* also free the mesh if it's using a tagged material */
+ int mat_index = mesh->NumMaterials();
+ while (mat_index--) {
+ if (IS_TAGGED(mesh->GetMeshMaterial(mat_index)->m_bucket->GetPolyMaterial()->GetBlenderMaterial())) {
+ gameobj->RemoveMeshes(); /* XXX - slack, same as above */
+ break;
+ }
+ }
+ }
}
/* make sure action actuators are not referencing tagged actions */