Fix client crash on deletion of an object the clients localplayer is attached to

master
sapier 2014-07-06 22:11:21 +02:00
parent b459f53ac3
commit 2e19af9919
1 changed files with 8 additions and 1 deletions

View File

@ -736,7 +736,8 @@ ClientActiveObject* GenericCAO::getParent()
void GenericCAO::removeFromScene(bool permanent) void GenericCAO::removeFromScene(bool permanent)
{ {
if((m_env != 0) && (permanent)) // Should be true when removing the object permanently and false when refreshing (eg: updating visuals) // Should be true when removing the object permanently and false when refreshing (eg: updating visuals)
if((m_env != NULL) && (permanent))
{ {
for(std::vector<u16>::iterator ci = m_children.begin(); for(std::vector<u16>::iterator ci = m_children.begin();
ci != m_children.end(); ci++) ci != m_children.end(); ci++)
@ -747,6 +748,12 @@ void GenericCAO::removeFromScene(bool permanent)
} }
m_env->m_attachements[getId()] = 0; m_env->m_attachements[getId()] = 0;
LocalPlayer* player = m_env->getLocalPlayer();
if (this == player->parent) {
player->parent = NULL;
player->isAttached = false;
}
} }
if(m_meshnode) if(m_meshnode)