From a64ee8433a57d961faab1c6eee6107cdedc944b7 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 13 Mar 2012 23:28:02 +0000 Subject: fix [#30493] GE crashes on exit because of using freed mtfaces from tessfaces prevent gpu_draw.c holding a pointer to a freed array. --- source/gameengine/Ketsji/KX_BlenderMaterial.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'source/gameengine/Ketsji/KX_BlenderMaterial.cpp') diff --git a/source/gameengine/Ketsji/KX_BlenderMaterial.cpp b/source/gameengine/Ketsji/KX_BlenderMaterial.cpp index 1a1e046f54c..66cbcdb914c 100644 --- a/source/gameengine/Ketsji/KX_BlenderMaterial.cpp +++ b/source/gameengine/Ketsji/KX_BlenderMaterial.cpp @@ -235,8 +235,12 @@ void KX_BlenderMaterial::OnExit() mTextures[i].DisableUnit(); } - if( mMaterial->tface ) - GPU_set_tpage(mMaterial->tface, 1, mMaterial->alphablend); + /* used to call with 'mMaterial->tface' but this can be a freed array, + * see: [#30493], so just call with NULL, this is best since it clears + * the 'lastface' pointer in GPU too - campbell */ + if (mMaterial->tface) { + GPU_set_tpage(NULL, 1, mMaterial->alphablend); + } } -- cgit v1.2.3