[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [16390] trunk/blender/source/gameengine/ Rasterizer/RAS_MaterialBucket.cpp:

Brecht Van Lommel brechtvanlommel at pandora.be
Sat Sep 6 03:19:27 CEST 2008


Revision: 16390
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=16390
Author:   blendix
Date:     2008-09-06 03:18:53 +0200 (Sat, 06 Sep 2008)

Log Message:
-----------

Bugfix: game engine could crash with empty display arrays on
windows (caused by invisible faces for example).

Modified Paths:
--------------
    trunk/blender/source/gameengine/Rasterizer/RAS_MaterialBucket.cpp

Modified: trunk/blender/source/gameengine/Rasterizer/RAS_MaterialBucket.cpp
===================================================================
--- trunk/blender/source/gameengine/Rasterizer/RAS_MaterialBucket.cpp	2008-09-05 23:28:28 UTC (rev 16389)
+++ trunk/blender/source/gameengine/Rasterizer/RAS_MaterialBucket.cpp	2008-09-06 01:18:53 UTC (rev 16390)
@@ -131,19 +131,29 @@
 	int startvertex, endvertex;
 	int startindex, endindex;
 
-	it.array = m_displayArrays[m_startarray];
+	it.array = (m_displayArrays.size() > 0)? m_displayArrays[m_startarray]: NULL;
 
-	startvertex = m_startvertex;
-	endvertex = (m_startarray == m_endarray)? m_endvertex: it.array->m_vertex.size();
-	startindex = m_startindex;
-	endindex = (m_startarray == m_endarray)? m_endindex: it.array->m_index.size();
+	if(it.array == NULL || it.array->m_index.size() == 0 || it.array->m_vertex.size() == 0) {
+		it.array = NULL;
+		it.vertex = NULL;
+		it.index = NULL;
+		it.startvertex = 0;
+		it.endvertex = 0;
+		it.totindex = 0;
+	}
+	else {
+		startvertex = m_startvertex;
+		endvertex = (m_startarray == m_endarray)? m_endvertex: it.array->m_vertex.size();
+		startindex = m_startindex;
+		endindex = (m_startarray == m_endarray)? m_endindex: it.array->m_index.size();
 
-	it.vertex = &it.array->m_vertex[0];
-	it.index = &it.array->m_index[startindex];
-	it.startvertex = startvertex;
-	it.endvertex = endvertex;
-	it.totindex = endindex-startindex;
-	it.arraynum = m_startarray;
+		it.vertex = &it.array->m_vertex[0];
+		it.index = &it.array->m_index[startindex];
+		it.startvertex = startvertex;
+		it.endvertex = endvertex;
+		it.totindex = endindex-startindex;
+		it.arraynum = m_startarray;
+	}
 }
 
 void RAS_MeshSlot::next(RAS_MeshSlot::iterator& it)





More information about the Bf-blender-cvs mailing list