mirror of
https://github.com/OpenMW/openmw.git
synced 2025-04-13 08:58:35 +00:00
Avoid accessing removed character on deleting last save
This commit is contained in:
parent
5f92d520ee
commit
5776eea1b0
@ -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<Character>::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;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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
|
||||
|
@ -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();
|
||||
|
Loading…
x
Reference in New Issue
Block a user