From 8464da75857c1556f64984c0b014300638e38d4f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?D=C3=A1niel=20Juh=C3=A1sz?= Date: Sat, 22 Apr 2017 00:55:07 +0200 Subject: Fix a memory leak (#5636) --- src/mesh.cpp | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) (limited to 'src/mesh.cpp') diff --git a/src/mesh.cpp b/src/mesh.cpp index 0a5b7fb6c..824d6891b 100644 --- a/src/mesh.cpp +++ b/src/mesh.cpp @@ -387,37 +387,39 @@ void recalculateBoundingBox(scene::IMesh *src_mesh) scene::IMeshBuffer* cloneMeshBuffer(scene::IMeshBuffer *mesh_buffer) { - scene::IMeshBuffer *clone = NULL; switch (mesh_buffer->getVertexType()) { case video::EVT_STANDARD: { video::S3DVertex *v = (video::S3DVertex *) mesh_buffer->getVertices(); u16 *indices = mesh_buffer->getIndices(); - scene::SMeshBuffer *temp_buf = new scene::SMeshBuffer(); - temp_buf->append(v, mesh_buffer->getVertexCount(), indices, + scene::SMeshBuffer *cloned_buffer = new scene::SMeshBuffer(); + cloned_buffer->append(v, mesh_buffer->getVertexCount(), indices, mesh_buffer->getIndexCount()); - return temp_buf; - break; + return cloned_buffer; } case video::EVT_2TCOORDS: { video::S3DVertex2TCoords *v = (video::S3DVertex2TCoords *) mesh_buffer->getVertices(); u16 *indices = mesh_buffer->getIndices(); - scene::SMeshBufferTangents *temp_buf = new scene::SMeshBufferTangents(); - temp_buf->append(v, mesh_buffer->getVertexCount(), indices, + scene::SMeshBufferTangents *cloned_buffer = + new scene::SMeshBufferTangents(); + cloned_buffer->append(v, mesh_buffer->getVertexCount(), indices, mesh_buffer->getIndexCount()); - break; + return cloned_buffer; } case video::EVT_TANGENTS: { video::S3DVertexTangents *v = (video::S3DVertexTangents *) mesh_buffer->getVertices(); u16 *indices = mesh_buffer->getIndices(); - scene::SMeshBufferTangents *temp_buf = new scene::SMeshBufferTangents(); - temp_buf->append(v, mesh_buffer->getVertexCount(), indices, + scene::SMeshBufferTangents *cloned_buffer = + new scene::SMeshBufferTangents(); + cloned_buffer->append(v, mesh_buffer->getVertexCount(), indices, mesh_buffer->getIndexCount()); - break; + return cloned_buffer; } } - return clone; + // This should not happen. + sanity_check(false); + return NULL; } scene::SMesh* cloneMesh(scene::IMesh *src_mesh) -- cgit v1.2.3