From: sapier Date: Sun, 6 Jul 2014 20:11:21 +0000 (+0200) Subject: Fix client crash on deletion of an object the clients localplayer is attached to X-Git-Tag: 0.4.10~2 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=2e19af99199a12bfabb751ed3c2a96bf8e3ab815;p=oweals%2Fminetest.git Fix client crash on deletion of an object the clients localplayer is attached to --- diff --git a/src/content_cao.cpp b/src/content_cao.cpp index fe11d33da..02622f5b4 100644 --- a/src/content_cao.cpp +++ b/src/content_cao.cpp @@ -736,7 +736,8 @@ ClientActiveObject* GenericCAO::getParent() 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::iterator ci = m_children.begin(); ci != m_children.end(); ci++) @@ -747,6 +748,12 @@ void GenericCAO::removeFromScene(bool permanent) } m_env->m_attachements[getId()] = 0; + + LocalPlayer* player = m_env->getLocalPlayer(); + if (this == player->parent) { + player->parent = NULL; + player->isAttached = false; + } } if(m_meshnode)