Prevent possible crashes related to not releasing pause

dev-time-step
krzys-h 2016-02-16 12:23:21 +01:00
parent a583b5ed1d
commit 999b2b85a4
1 changed files with 13 additions and 2 deletions

View File

@ -64,15 +64,26 @@ void CPauseManager::DeactivatePause(ActivePause* pause)
{ {
if (pause == nullptr) return; if (pause == nullptr) return;
//GetLogger()->Debug("Deactivated pause mode - %s\n", GetPauseName(pause->type).c_str()); //GetLogger()->Debug("Deactivated pause mode - %s\n", GetPauseName(pause->type).c_str());
m_activePause.erase(std::remove_if( auto it = std::remove_if(
m_activePause.begin(), m_activePause.end(), m_activePause.begin(), m_activePause.end(),
[&](const std::unique_ptr<ActivePause>& x) { return x.get() == pause; }) [&](const std::unique_ptr<ActivePause>& x) { return x.get() == pause; }
); );
if (it == m_activePause.end())
{
GetLogger()->Warn("Releasing previously not deactivated pause now!\n");
std::free(pause);
}
m_activePause.erase(it);
Update(); Update();
} }
void CPauseManager::FlushPause() void CPauseManager::FlushPause()
{ {
for (auto& pause : m_activePause)
{
GetLogger()->Warn("Pause not deactivated before phase change!\n");
pause.release();
}
m_activePause.clear(); m_activePause.clear();
} }