[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