[Bf-blender-cvs] [43f3e79] master: Fix T40111: replaceMesh() crashes BGE when used on a parented object

Mitchell Stokes noreply at git.blender.org
Tue May 13 07:55:16 CEST 2014


Commit: 43f3e79ceeb92c5373b22fb64fdf2ed9c781d5cd
Author: Mitchell Stokes
Date:   Mon May 12 22:52:14 2014 -0700
https://developer.blender.org/rB43f3e79ceeb92c5373b22fb64fdf2ed9c781d5cd

Fix T40111: replaceMesh() crashes BGE when used on a parented object

The replace mesh code was still calling release() on the parent object when it
no longer needed to (due to earlier commits).

===================================================================

M	source/gameengine/Ketsji/KX_Scene.cpp

===================================================================

diff --git a/source/gameengine/Ketsji/KX_Scene.cpp b/source/gameengine/Ketsji/KX_Scene.cpp
index c826f39..7cab6a8 100644
--- a/source/gameengine/Ketsji/KX_Scene.cpp
+++ b/source/gameengine/Ketsji/KX_Scene.cpp
@@ -1166,8 +1166,6 @@ void KX_Scene::ReplaceMesh(class CValue* obj,void* meshobj, bool use_gfx, bool u
 #ifdef WITH_BULLET
 			bool bHasSoftBody = (!parentobj && (blendobj->gameflag & OB_SOFT_BODY));
 #endif
-			bool releaseParent = true;
-
 			
 			if (oldblendobj==NULL) {
 				if (bHasModifier || bHasShapeKey || bHasDvert || bHasArmature) {
@@ -1189,7 +1187,6 @@ void KX_Scene::ReplaceMesh(class CValue* obj,void* meshobj, bool use_gfx, bool u
 						true,
 						static_cast<BL_ArmatureObject*>( parentobj )
 					);
-					releaseParent= false;
 					modifierDeformer->LoadShapeDrivers(parentobj);
 				}
 				else
@@ -1217,7 +1214,6 @@ void KX_Scene::ReplaceMesh(class CValue* obj,void* meshobj, bool use_gfx, bool u
 						true,
 						static_cast<BL_ArmatureObject*>( parentobj )
 					);
-					releaseParent= false;
 					shapeDeformer->LoadShapeDrivers(parentobj);
 				}
 				else
@@ -1243,7 +1239,6 @@ void KX_Scene::ReplaceMesh(class CValue* obj,void* meshobj, bool use_gfx, bool u
 					true,
 					static_cast<BL_ArmatureObject*>( parentobj )
 				);
-				releaseParent= false;
 				newobj->SetDeformer(skinDeformer);
 			}
 			else if (bHasDvert)
@@ -1260,10 +1255,6 @@ void KX_Scene::ReplaceMesh(class CValue* obj,void* meshobj, bool use_gfx, bool u
 				newobj->SetDeformer(softdeformer);
 			}
 #endif
-
-			// release parent reference if its not being used 
-			if ( releaseParent && parentobj)
-				parentobj->Release();
 		}
 	}




More information about the Bf-blender-cvs mailing list