diff --git a/src/ScreenSelectProfile.cpp b/src/ScreenSelectProfile.cpp index e5d2171658..502038f0c5 100644 --- a/src/ScreenSelectProfile.cpp +++ b/src/ScreenSelectProfile.cpp @@ -181,13 +181,18 @@ bool ScreenSelectProfile::Finish(){ if( iUnselectedProfiles && iUsedLocalProfiles < PROFILEMAN->GetNumLocalProfiles() ) return false; - // all ok - load profiles and go to next screen + // unload all profiles, so we don't end up in a situation where two + // players might have the same profile assigned FOREACH_PlayerNumber( p ) { MEMCARDMAN->UnlockCard( p ); MEMCARDMAN->UnmountCard( p ); PROFILEMAN->UnloadProfile( p ); + } + // all ok - load profiles and go to next screen + FOREACH_PlayerNumber( p ) + { if( m_iSelectedProfiles[p] > 0 ) { PROFILEMAN->m_sDefaultLocalProfileID[p].Set( PROFILEMAN->GetLocalProfileIDFromIndex( m_iSelectedProfiles[p] - 1 ) );