Fix memory leaks in GenericCAO, ShaderSource and Player classes

master
sapier 2014-07-02 23:33:18 +02:00
parent 3d6d66b181
commit b8343cd11c
3 changed files with 8 additions and 3 deletions

View File

@ -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++)

View File

@ -100,6 +100,7 @@ Player::Player(IGameDef *gamedef):
Player::~Player()
{
clearHud();
}
// Horizontal acceleration (X and Z), Y direction is ignored

View File

@ -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,