diff --git a/apps/openmw/mwstate/charactermanager.cpp b/apps/openmw/mwstate/charactermanager.cpp index c41ddd42c0..32f0fe0aef 100644 --- a/apps/openmw/mwstate/charactermanager.cpp +++ b/apps/openmw/mwstate/charactermanager.cpp @@ -38,7 +38,7 @@ MWState::Character* MWState::CharacterManager::getCurrentCharacter() return mCurrent; } -void MWState::CharacterManager::deleteSlot(const MWState::Character* character, const MWState::Slot* slot) +void MWState::CharacterManager::deleteSlot(const MWState::Slot* slot, const MWState::Character*& character) { std::list::iterator it = findCharacter(character); @@ -51,6 +51,7 @@ void MWState::CharacterManager::deleteSlot(const MWState::Character* character, if (character == mCurrent) mCurrent = nullptr; mCharacters.erase(it); + character = nullptr; } } diff --git a/apps/openmw/mwstate/charactermanager.hpp b/apps/openmw/mwstate/charactermanager.hpp index dac189e68a..015144d820 100644 --- a/apps/openmw/mwstate/charactermanager.hpp +++ b/apps/openmw/mwstate/charactermanager.hpp @@ -33,7 +33,7 @@ namespace MWState Character* getCurrentCharacter(); ///< @note May return null - void deleteSlot(const MWState::Character* character, const MWState::Slot* slot); + void deleteSlot(const MWState::Slot* slot, const Character*& character); Character* createCharacter(const std::string& name); ///< Create new character within saved game management diff --git a/apps/openmw/mwstate/statemanagerimp.cpp b/apps/openmw/mwstate/statemanagerimp.cpp index f420589b70..b997d124c8 100644 --- a/apps/openmw/mwstate/statemanagerimp.cpp +++ b/apps/openmw/mwstate/statemanagerimp.cpp @@ -706,10 +706,10 @@ void MWState::StateManager::quickLoad() void MWState::StateManager::deleteGame(const MWState::Character* character, const MWState::Slot* slot) { const std::filesystem::path savePath = slot->mPath; - mCharacterManager.deleteSlot(character, slot); + mCharacterManager.deleteSlot(slot, character); if (mLastSavegame == savePath) { - if (character->begin() != character->end()) + if (character != nullptr) mLastSavegame = character->begin()->mPath; else mLastSavegame.clear();