Fix a memory leak (#5636)
This commit is contained in:
parent
3e71c8f482
commit
8464da7585
26
src/mesh.cpp
26
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)
|
||||
|
|
|
@ -85,6 +85,7 @@ void rotateMeshYZby (scene::IMesh *mesh, f64 degrees);
|
|||
|
||||
/*
|
||||
* Clone the mesh buffer.
|
||||
* The returned pointer should be dropped.
|
||||
*/
|
||||
scene::IMeshBuffer* cloneMeshBuffer(scene::IMeshBuffer *mesh_buffer);
|
||||
|
||||
|
|
Loading…
Reference in New Issue