[Bf-blender-cvs] [23b682d] master: Fix T40172: LibFree() crashes with shared materials (e.g., from multiple LibNew() calls)
Mitchell Stokes
noreply at git.blender.org
Wed May 14 00:55:39 CEST 2014
Commit: 23b682d5948e98264340e6dc81237b81d299b5b0
Author: Mitchell Stokes
Date: Tue May 13 15:50:28 2014 -0700
https://developer.blender.org/rB23b682d5948e98264340e6dc81237b81d299b5b0
Fix T40172: LibFree() crashes with shared materials (e.g., from multiple LibNew() calls)
===================================================================
M source/gameengine/Converter/KX_BlenderSceneConverter.cpp
===================================================================
diff --git a/source/gameengine/Converter/KX_BlenderSceneConverter.cpp b/source/gameengine/Converter/KX_BlenderSceneConverter.cpp
index 5930d5e..7d7f8eb 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 */
More information about the Bf-blender-cvs
mailing list