Fix memory leak found by vlj

This commit is contained in:
Marianne Gagnon
2014-12-23 19:57:29 -05:00
parent e421a05663
commit 526e565c4d
4 changed files with 10 additions and 6 deletions

View File

@@ -60,6 +60,8 @@ public:
size_t getHeight() const { return height; }
static void Blit(const FrameBuffer &Src, FrameBuffer &Dst, GLbitfield mask = GL_COLOR_BUFFER_BIT, GLenum filter = GL_NEAREST);
void BlitToDefault(size_t, size_t, size_t, size_t);
LEAK_CHECK(FrameBuffer);
};
class VertexUtils

View File

@@ -55,6 +55,7 @@ QuadGraph::QuadGraph(const std::string &quad_file_name,
m_mesh = NULL;
m_mesh_buffer = NULL;
m_lap_length = 0;
m_new_rtt = NULL;
QuadSet::create();
QuadSet::get()->init(quad_file_name);
m_quad_filename = quad_file_name;
@@ -72,6 +73,8 @@ QuadGraph::~QuadGraph()
}
if(UserConfigParams::m_track_debug)
cleanupDebugMesh();
if (m_new_rtt != NULL)
delete m_new_rtt;
} // ~QuadGraph
// -----------------------------------------------------------------------------
@@ -991,7 +994,7 @@ void QuadGraph::makeMiniMap(const core::dimension2du &dimension,
IrrDriver::RTTProvider* oldRttProvider = NULL;
if (irr_driver->isGLSL())
{
newRttProvider = new RTT(dimension.Width, dimension.Height);
m_new_rtt = newRttProvider = new RTT(dimension.Width, dimension.Height);
}
else
{
@@ -1079,9 +1082,6 @@ void QuadGraph::makeMiniMap(const core::dimension2du &dimension,
if (irr_driver->isGLSL())
{
frame_buffer = newRttProvider->render(camera, GUIEngine::getLatestDt());
// TODO: leak
//delete newRttProvider;
}
else
{

View File

@@ -37,6 +37,7 @@ namespace irr
using namespace irr;
class CheckLine;
class RTT;
class FrameBuffer;
/**
@@ -55,6 +56,8 @@ class QuadGraph : public NoCopy
private:
static QuadGraph *m_quad_graph;
RTT* m_new_rtt;
/** The actual graph data structure. */
std::vector<GraphNode*> m_all_nodes;
/** For debug mode only: the node of the debug mesh. */

View File

@@ -352,8 +352,7 @@ void Track::cleanup()
}
if (m_new_rtt_mini_map)
{
delete m_new_rtt_mini_map;
m_new_rtt_mini_map = NULL;
m_new_rtt_mini_map = NULL; // already deleted by QuadGraph::~QuadGraph
}
for(unsigned int i=0; i<m_sky_textures.size(); i++)