Skip to content
Permalink
Browse files

Fix memory leaks in GenericCAO, ShaderSource and Player classes

  • Loading branch information
sapier sapier
sapier authored and sapier committed Jul 2, 2014
1 parent 3d6d66b commit b8343cd11c834fb2613b104418ed08e9fdb1665a
Showing with 8 additions and 3 deletions.
  1. +2 −1 src/content_cao.cpp
  2. +1 −0 src/player.cpp
  3. +5 −2 src/shader.cpp
@@ -670,6 +670,7 @@ GenericCAO::~GenericCAO()
{
m_env->removePlayerName(m_name.c_str());
}
removeFromScene(true);
}

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

void GenericCAO::removeFromScene(bool permanent)
{
if(permanent) // Should be true when removing the object permanently and false when refreshing (eg: updating visuals)
if((m_env != 0) && (permanent)) // Should be true when removing the object permanently and false when refreshing (eg: updating visuals)
{
for(std::vector<u16>::iterator ci = m_children.begin();
ci != m_children.end(); ci++)
@@ -100,6 +100,7 @@ Player::Player(IGameDef *gamedef):

Player::~Player()
{
clearHud();
}

// Horizontal acceleration (X and Z), Y direction is ignored
@@ -383,13 +383,16 @@ ShaderSource::ShaderSource(IrrlichtDevice *device):

ShaderSource::~ShaderSource()
{
//m_shader_callback->drop();

for (std::vector<IShaderConstantSetter*>::iterator iter = m_global_setters.begin();
iter != m_global_setters.end(); iter++) {
delete *iter;
}
m_global_setters.clear();

if (m_shader_callback) {
m_shader_callback->drop();
m_shader_callback = NULL;
}
}

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

0 comments on commit b8343cd

Please sign in to comment.
You can’t perform that action at this time.