[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [54837] trunk/blender/source/gameengine/ Ketsji/BL_Action.cpp: BGE: Fixing a crash reported by Ace Dragon on BA.

Mitchell Stokes mogurijin at gmail.com
Mon Feb 25 06:55:37 CET 2013


Revision: 54837
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=54837
Author:   moguri
Date:     2013-02-25 05:55:37 +0000 (Mon, 25 Feb 2013)
Log Message:
-----------
BGE: Fixing a crash reported by Ace Dragon on BA. It looks like Object->totcol can give a number higher than the number of materials, so I've added some NULL checks.

Modified Paths:
--------------
    trunk/blender/source/gameengine/Ketsji/BL_Action.cpp

Modified: trunk/blender/source/gameengine/Ketsji/BL_Action.cpp
===================================================================
--- trunk/blender/source/gameengine/Ketsji/BL_Action.cpp	2013-02-25 05:18:29 UTC (rev 54836)
+++ trunk/blender/source/gameengine/Ketsji/BL_Action.cpp	2013-02-25 05:55:37 UTC (rev 54837)
@@ -176,11 +176,13 @@
 	// Now try materials
 	if (m_obj->GetBlenderObject()->totcol==1) {
 		Material *mat = give_current_material(m_obj->GetBlenderObject(), 1);
-		sg_contr = BL_CreateMaterialIpo(m_action, mat, 0, m_obj, kxscene->GetSceneConverter());
-		if (sg_contr) {
-			m_sg_contr_list.push_back(sg_contr);
-			m_obj->GetSGNode()->AddSGController(sg_contr);
-			sg_contr->SetObject(m_obj->GetSGNode());
+		if (mat) {
+			sg_contr = BL_CreateMaterialIpo(m_action, mat, 0, m_obj, kxscene->GetSceneConverter());
+			if (sg_contr) {
+				m_sg_contr_list.push_back(sg_contr);
+				m_obj->GetSGNode()->AddSGController(sg_contr);
+				sg_contr->SetObject(m_obj->GetSGNode());
+			}
 		}
 	} else {
 		Material *mat;
@@ -188,12 +190,14 @@
 
 		for (int matidx = 1; matidx <= m_obj->GetBlenderObject()->totcol; ++matidx) {
 			mat = give_current_material(m_obj->GetBlenderObject(), matidx);
-			matname = mat->id.name;
-			sg_contr = BL_CreateMaterialIpo(m_action, mat, matname.hash(), m_obj, kxscene->GetSceneConverter());
-			if (sg_contr) {
-				m_sg_contr_list.push_back(sg_contr);
-				m_obj->GetSGNode()->AddSGController(sg_contr);
-				sg_contr->SetObject(m_obj->GetSGNode());
+			if (mat) {
+				matname = mat->id.name;
+				sg_contr = BL_CreateMaterialIpo(m_action, mat, matname.hash(), m_obj, kxscene->GetSceneConverter());
+				if (sg_contr) {
+					m_sg_contr_list.push_back(sg_contr);
+					m_obj->GetSGNode()->AddSGController(sg_contr);
+					sg_contr->SetObject(m_obj->GetSGNode());
+				}
 			}
 		}
 	}




More information about the Bf-blender-cvs mailing list