Skip to content

Commit b8343cd

Browse files
sapiersapier
sapier
authored and
sapier
committedJul 2, 2014
Fix memory leaks in GenericCAO, ShaderSource and Player classes
1 parent 3d6d66b commit b8343cd

File tree

3 files changed

+8
-3
lines changed

3 files changed

+8
-3
lines changed
 

‎src/content_cao.cpp

+2-1
Original file line numberDiff line numberDiff line change
@@ -670,6 +670,7 @@ GenericCAO::~GenericCAO()
670670
{
671671
m_env->removePlayerName(m_name.c_str());
672672
}
673+
removeFromScene(true);
673674
}
674675

675676
core::aabbox3d<f32>* GenericCAO::getSelectionBox()
@@ -735,7 +736,7 @@ ClientActiveObject* GenericCAO::getParent()
735736

736737
void GenericCAO::removeFromScene(bool permanent)
737738
{
738-
if(permanent) // Should be true when removing the object permanently and false when refreshing (eg: updating visuals)
739+
if((m_env != 0) && (permanent)) // Should be true when removing the object permanently and false when refreshing (eg: updating visuals)
739740
{
740741
for(std::vector<u16>::iterator ci = m_children.begin();
741742
ci != m_children.end(); ci++)

‎src/player.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,7 @@ Player::Player(IGameDef *gamedef):
100100

101101
Player::~Player()
102102
{
103+
clearHud();
103104
}
104105

105106
// Horizontal acceleration (X and Z), Y direction is ignored

‎src/shader.cpp

+5-2
Original file line numberDiff line numberDiff line change
@@ -383,13 +383,16 @@ ShaderSource::ShaderSource(IrrlichtDevice *device):
383383

384384
ShaderSource::~ShaderSource()
385385
{
386-
//m_shader_callback->drop();
387-
388386
for (std::vector<IShaderConstantSetter*>::iterator iter = m_global_setters.begin();
389387
iter != m_global_setters.end(); iter++) {
390388
delete *iter;
391389
}
392390
m_global_setters.clear();
391+
392+
if (m_shader_callback) {
393+
m_shader_callback->drop();
394+
m_shader_callback = NULL;
395+
}
393396
}
394397

395398
u32 ShaderSource::getShader(const std::string &name,

0 commit comments

Comments
 (0)
Please sign in to comment.