[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [14482] trunk/blender/source/gameengine: BGE bug fix: crash at exit when object with Radar/ Near sensor has debug properties

Benoit Bolsee benoit.bolsee at online.be
Sat Apr 19 23:15:37 CEST 2008


Revision: 14482
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=14482
Author:   ben2610
Date:     2008-04-19 23:15:37 +0200 (Sat, 19 Apr 2008)

Log Message:
-----------
BGE bug fix: crash at exit when object with Radar/Near sensor has debug properties

Modified Paths:
--------------
    trunk/blender/source/gameengine/GameLogic/SCA_IScene.cpp
    trunk/blender/source/gameengine/GameLogic/SCA_IScene.h
    trunk/blender/source/gameengine/Ketsji/KX_Scene.cpp

Modified: trunk/blender/source/gameengine/GameLogic/SCA_IScene.cpp
===================================================================
--- trunk/blender/source/gameengine/GameLogic/SCA_IScene.cpp	2008-04-19 21:09:40 UTC (rev 14481)
+++ trunk/blender/source/gameengine/GameLogic/SCA_IScene.cpp	2008-04-19 21:15:37 UTC (rev 14482)
@@ -47,19 +47,23 @@
 {
 }
 
-
-
-SCA_IScene::~SCA_IScene()
+void SCA_IScene::RemoveAllDebugProperties()
 {
-	// release debugprop list
 	for (std::vector<SCA_DebugProp*>::iterator it = m_debugList.begin();
 		!(it==m_debugList.end());it++)
 	{
 		delete (*it);
 	}
+	m_debugList.clear();
 }
 
 
+SCA_IScene::~SCA_IScene()
+{
+	RemoveAllDebugProperties();
+}
+
+
 std::vector<SCA_DebugProp*>& SCA_IScene::GetDebugProperties() 
 {
 	return m_debugList;

Modified: trunk/blender/source/gameengine/GameLogic/SCA_IScene.h
===================================================================
--- trunk/blender/source/gameengine/GameLogic/SCA_IScene.h	2008-04-19 21:09:40 UTC (rev 14481)
+++ trunk/blender/source/gameengine/GameLogic/SCA_IScene.h	2008-04-19 21:15:37 UTC (rev 14482)
@@ -59,6 +59,7 @@
 	std::vector<SCA_DebugProp*>& GetDebugProperties();
 	void			AddDebugProperty(class CValue* debugprop,
 									 const STR_String &name);
+	void			RemoveAllDebugProperties();
 };
 
 #endif //__KX_ISCENE_H

Modified: trunk/blender/source/gameengine/Ketsji/KX_Scene.cpp
===================================================================
--- trunk/blender/source/gameengine/Ketsji/KX_Scene.cpp	2008-04-19 21:09:40 UTC (rev 14481)
+++ trunk/blender/source/gameengine/Ketsji/KX_Scene.cpp	2008-04-19 21:15:37 UTC (rev 14482)
@@ -178,7 +178,11 @@
 
 KX_Scene::~KX_Scene()
 {
-	
+	// The release of debug properties used to be in SCA_IScene::~SCA_IScene
+	// It's still there but we remove all properties here otherwise some
+	// reference might be hanging and causing late release of objects
+	RemoveAllDebugProperties();
+
 	while (GetRootParentList()->GetCount() > 0) 
 	{
 		KX_GameObject* parentobj = (KX_GameObject*) GetRootParentList()->GetValue(0);





More information about the Bf-blender-cvs mailing list