Fix: Stop any gamelog action when recovering from SlError()

desync-debugging
glx 4 years ago committed by Charles Pigott
parent 3ba34a72aa
commit 0ed00ae111

@ -87,6 +87,11 @@ void GamelogStopAction()
if (print) GamelogPrintDebug(5);
}
void GamelogStopAnyAction()
{
if (_gamelog_action_type != GLAT_NONE) GamelogStopAction();
}
/**
* Frees the memory allocated by a gamelog
*/

@ -27,6 +27,7 @@ enum GamelogActionType {
void GamelogStartAction(GamelogActionType at);
void GamelogStopAction();
void GamelogStopAnyAction();
void GamelogFree(struct LoggedAction *gamelog_action, uint gamelog_actions);
void GamelogReset();

@ -341,6 +341,10 @@ void NORETURN SlError(StringID string, const char *extra_msg)
* when we access them during cleaning the pool dereferences of
* those indices will be made with segmentation faults as result. */
if (_sl.action == SLA_LOAD || _sl.action == SLA_PTRS) SlNullPointers();
/* Logging could be active. */
GamelogStopAnyAction();
throw std::exception();
}

Loading…
Cancel
Save