forked from bartvdbraak/blender
BGE: fix use after free
This commit is contained in:
parent
fd629d2fb8
commit
edfe2d6691
@ -1080,6 +1080,16 @@ int KX_Scene::NewRemoveObject(class CValue* gameobj)
|
||||
group->RemoveInstanceObject(newobj);
|
||||
|
||||
newobj->RemoveMeshes();
|
||||
|
||||
switch (newobj->GetGameObjectType()) {
|
||||
case SCA_IObject::OBJ_CAMERA:
|
||||
m_cameras.remove((KX_Camera *)newobj);
|
||||
break;
|
||||
case SCA_IObject::OBJ_TEXT:
|
||||
m_fonts.remove((KX_FontObject *)newobj);
|
||||
break;
|
||||
}
|
||||
|
||||
ret = 1;
|
||||
if (newobj->GetGameObjectType()==SCA_IObject::OBJ_LIGHT && m_lightlist->RemoveValue(newobj))
|
||||
ret = newobj->Release();
|
||||
@ -1096,6 +1106,9 @@ int KX_Scene::NewRemoveObject(class CValue* gameobj)
|
||||
if (m_animatedlist->RemoveValue(newobj))
|
||||
ret = newobj->Release();
|
||||
|
||||
/* Warning 'newobj' maye be freed now, only compare, don't access */
|
||||
|
||||
|
||||
if (newobj == m_active_camera)
|
||||
{
|
||||
//no AddRef done on m_active_camera so no Release
|
||||
@ -1103,12 +1116,6 @@ int KX_Scene::NewRemoveObject(class CValue* gameobj)
|
||||
m_active_camera = NULL;
|
||||
}
|
||||
|
||||
// in case this is a camera
|
||||
m_cameras.remove((KX_Camera*)newobj);
|
||||
|
||||
// in case this is a font
|
||||
m_fonts.remove((KX_FontObject*)newobj);
|
||||
|
||||
/* currently does nothing, keep in case we need to Unregister something */
|
||||
#if 0
|
||||
if (m_sceneConverter)
|
||||
|
Loading…
Reference in New Issue
Block a user