diff options
author | Daniel Stokes <kupomail@gmail.com> | 2013-06-20 10:17:28 +0400 |
---|---|---|
committer | Daniel Stokes <kupomail@gmail.com> | 2013-06-20 10:17:28 +0400 |
commit | 62c6ee2c558eb33813dc41326f4f14ce046c477a (patch) | |
tree | c8647b136d0f2a0767a50c4cf58ad8a1ae513f80 /source/gameengine | |
parent | 1e64732d5264edef5af455febdf8567fc3472a05 (diff) |
BGE: fix [#35447] LibLoad Meshes and Scenes causes crash of blender
KX_BlenderSceneConverter's destructor freed the contents of several std::vectors without removing those contents from the vectors. Later these vectors are iterated through. Making sure the vectors get cleared solves this problem.
Diffstat (limited to 'source/gameengine')
-rw-r--r-- | source/gameengine/Converter/KX_BlenderSceneConverter.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/source/gameengine/Converter/KX_BlenderSceneConverter.cpp b/source/gameengine/Converter/KX_BlenderSceneConverter.cpp index 8703a545a4f..19287c1fd62 100644 --- a/source/gameengine/Converter/KX_BlenderSceneConverter.cpp +++ b/source/gameengine/Converter/KX_BlenderSceneConverter.cpp @@ -170,6 +170,7 @@ KX_BlenderSceneConverter::~KX_BlenderSceneConverter() delete (*itw).second; itw++; } + m_worldinfos.clear(); vector<pair<KX_Scene*,RAS_IPolyMaterial*> >::iterator itp = m_polymaterials.begin(); while (itp != m_polymaterials.end()) { @@ -177,6 +178,7 @@ KX_BlenderSceneConverter::~KX_BlenderSceneConverter() delete (*itp).second; itp++; } + m_polymaterials.clear(); // delete after RAS_IPolyMaterial vector<pair<KX_Scene*,BL_Material *> >::iterator itmat = m_materials.begin(); @@ -185,6 +187,7 @@ KX_BlenderSceneConverter::~KX_BlenderSceneConverter() delete (*itmat).second; itmat++; } + m_materials.clear(); vector<pair<KX_Scene*,RAS_MeshObject*> >::iterator itm = m_meshobjects.begin(); @@ -192,6 +195,7 @@ KX_BlenderSceneConverter::~KX_BlenderSceneConverter() delete (*itm).second; itm++; } + m_meshobjects.clear(); #ifdef WITH_BULLET KX_ClearBulletSharedShapes(); |