From 2e19af99199a12bfabb751ed3c2a96bf8e3ab815 Mon Sep 17 00:00:00 2001 From: sapier Date: Sun, 6 Jul 2014 22:11:21 +0200 Subject: [PATCH] Fix client crash on deletion of an object the clients localplayer is attached to --- src/content_cao.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/content_cao.cpp b/src/content_cao.cpp index fe11d33d..02622f5b 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) -- 2.30.2