From beb6b3e5937160fab583f5dda2be53a651f0ec71 Mon Sep 17 00:00:00 2001 From: Craig Robbins Date: Mon, 5 Jan 2015 22:39:08 +1000 Subject: [PATCH] Prevent client crashing if an NDT_AIRLIKE node is dropped The player dropping the node can either be themselves or another player (i.e. without this fix you can crash other people's clients) Thanks CWz for reporting the issue --- src/wieldmesh.cpp | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/src/wieldmesh.cpp b/src/wieldmesh.cpp index bde0b72af..4ddae36d4 100644 --- a/src/wieldmesh.cpp +++ b/src/wieldmesh.cpp @@ -411,20 +411,20 @@ void WieldMeshSceneNode::changeToMesh(scene::IMesh *mesh) m_meshnode->setVisible(false); m_meshnode->setMesh(dummymesh); dummymesh->drop(); // m_meshnode grabbed it - } - - if (m_lighting) { - m_meshnode->setMesh(mesh); } else { - /* - Lighting is disabled, this means the caller can (and probably will) - call setColor later. We therefore need to clone the mesh so that - setColor will only modify this scene node's mesh, not others'. - */ - scene::IMeshManipulator *meshmanip = SceneManager->getMeshManipulator(); - scene::IMesh *new_mesh = meshmanip->createMeshCopy(mesh); - m_meshnode->setMesh(new_mesh); - new_mesh->drop(); // m_meshnode grabbed it + if (m_lighting) { + m_meshnode->setMesh(mesh); + } else { + /* + Lighting is disabled, this means the caller can (and probably will) + call setColor later. We therefore need to clone the mesh so that + setColor will only modify this scene node's mesh, not others'. + */ + scene::IMeshManipulator *meshmanip = SceneManager->getMeshManipulator(); + scene::IMesh *new_mesh = meshmanip->createMeshCopy(mesh); + m_meshnode->setMesh(new_mesh); + new_mesh->drop(); // m_meshnode grabbed it + } } m_meshnode->setMaterialFlag(video::EMF_LIGHTING, m_lighting);