mirror of https://github.com/OpenTTD/OpenTTD
Fix: Stop any gamelog action when recovering from SlError()
parent
bb251f45fc
commit
1072c74bc4
|
@ -87,6 +87,11 @@ void GamelogStopAction()
|
||||||
if (print) GamelogPrintDebug(5);
|
if (print) GamelogPrintDebug(5);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GamelogStopAnyAction()
|
||||||
|
{
|
||||||
|
if (_gamelog_action_type != GLAT_NONE) GamelogStopAction();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Frees the memory allocated by a gamelog
|
* Frees the memory allocated by a gamelog
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -27,6 +27,7 @@ enum GamelogActionType {
|
||||||
|
|
||||||
void GamelogStartAction(GamelogActionType at);
|
void GamelogStartAction(GamelogActionType at);
|
||||||
void GamelogStopAction();
|
void GamelogStopAction();
|
||||||
|
void GamelogStopAnyAction();
|
||||||
|
|
||||||
void GamelogFree(struct LoggedAction *gamelog_action, uint gamelog_actions);
|
void GamelogFree(struct LoggedAction *gamelog_action, uint gamelog_actions);
|
||||||
void GamelogReset();
|
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
|
* when we access them during cleaning the pool dereferences of
|
||||||
* those indices will be made with segmentation faults as result. */
|
* those indices will be made with segmentation faults as result. */
|
||||||
if (_sl.action == SLA_LOAD || _sl.action == SLA_PTRS) SlNullPointers();
|
if (_sl.action == SLA_LOAD || _sl.action == SLA_PTRS) SlNullPointers();
|
||||||
|
|
||||||
|
/* Logging could be active. */
|
||||||
|
GamelogStopAnyAction();
|
||||||
|
|
||||||
throw std::exception();
|
throw std::exception();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue