Free some memory allocations explicitly, found by vagrant
I found strange issue when Celestia is built using cmake: the program was aborted with "corrupted size vs. prev_size" message. GDB showed address as `delete[] text` in Console::~Console(), while there was not double free(). Vargant showed "incorrect delete/delete[]/realloc" for ShaderManager.shaders. Now it's gone.pull/110/head
parent
b51280666b
commit
5e84d0e3e3
|
@ -54,6 +54,13 @@ Body::~Body()
|
|||
delete timeline;
|
||||
delete satellites;
|
||||
delete frameTree;
|
||||
|
||||
if(altSurfaces)
|
||||
{
|
||||
for (const auto s : *altSurfaces)
|
||||
delete s.second;
|
||||
delete altSurfaces;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -547,6 +547,14 @@ Renderer::~Renderer()
|
|||
if (sceneTexture != 0)
|
||||
glDeleteTextures(1, &sceneTexture);
|
||||
#endif
|
||||
|
||||
delete shadowTex;
|
||||
delete shadowMaskTexture;
|
||||
delete penumbraFunctionTexture;
|
||||
delete normalizationTex;
|
||||
|
||||
for(const auto tex : eclipseShadowTextures)
|
||||
delete tex;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -202,10 +202,6 @@ ShaderProperties::hasShadowsForLight(unsigned int light) const
|
|||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// Returns true if diffuse, specular, bump, and night textures all use the
|
||||
// same texture coordinate set.
|
||||
bool
|
||||
|
@ -300,6 +296,16 @@ ShaderManager::ShaderManager()
|
|||
}
|
||||
|
||||
|
||||
ShaderManager::~ShaderManager()
|
||||
{
|
||||
for(const auto& shader : shaders)
|
||||
{
|
||||
delete shader.second;
|
||||
}
|
||||
|
||||
shaders.clear();
|
||||
}
|
||||
|
||||
CelestiaGLProgram*
|
||||
ShaderManager::getShader(const ShaderProperties& props)
|
||||
{
|
||||
|
|
|
@ -248,7 +248,7 @@ class ShaderManager
|
|||
{
|
||||
public:
|
||||
ShaderManager();
|
||||
~ShaderManager() = default;
|
||||
~ShaderManager();
|
||||
|
||||
CelestiaGLProgram* getShader(const ShaderProperties&);
|
||||
|
||||
|
|
Loading…
Reference in New Issue