diff --git a/stepmania/src/RageSoundManager.cpp b/stepmania/src/RageSoundManager.cpp index a086e65c9e..7cb8f75ced 100644 --- a/stepmania/src/RageSoundManager.cpp +++ b/stepmania/src/RageSoundManager.cpp @@ -72,17 +72,16 @@ void RageSoundManager::Update(float delta) FlushPosMapQueue(); /* Scan the owned_sounds list for sounds that are no longer playing, and delete them. */ - set::iterator it = owned_sounds.begin(), next = it; - ++next; - while( it != owned_sounds.end() ) - { + set::iterator it; + set ToDelete; + for( it = owned_sounds.begin(); it != owned_sounds.end(); ++it ) if( !(*it)->IsPlaying() ) - { - delete *it; - owned_sounds.erase( it ); - } - it = next; - ++next; + ToDelete.insert( *it ); + + for( it = ToDelete.begin(); it != ToDelete.end(); ++it ) + { + delete *it; + owned_sounds.erase( it ); } for(set::iterator i = all_sounds.begin();