diff options
author | Campbell Barton <ideasman42@gmail.com> | 2012-03-14 03:28:02 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2012-03-14 03:28:02 +0400 |
commit | a64ee8433a57d961faab1c6eee6107cdedc944b7 (patch) | |
tree | c1093a86ed77be4d703707d8abe63e274b4acf35 /source | |
parent | 489526477c2e39060f8136fa48de39d91c4c75ed (diff) |
fix [#30493] GE crashes on exit because of using freed mtfaces from tessfaces
prevent gpu_draw.c holding a pointer to a freed array.
Diffstat (limited to 'source')
-rw-r--r-- | source/gameengine/Ketsji/KX_BlenderMaterial.cpp | 8 |
1 files changed, 6 insertions, 2 deletions
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); + } } |