Index: trunk/src/fmod/fmod_audio.cc
===================================================================
--- trunk/src/fmod/fmod_audio.cc	(revision 406)
+++ trunk/src/fmod/fmod_audio.cc	(revision 543)
@@ -107,9 +107,12 @@
 {
 	sound_info* info = m_sounds.get( a_sound );
+	release( info );
+	m_sounds.destroy( a_sound );
+}
+
+void nv::fmod::audio::release( sound_info* info )
+{
 	if ( info )
-	{
 		FMOD_Sound_Release( static_cast<FMOD_SOUND*>( info->fmod_sound ) );
-		m_sounds.destroy( a_sound );
-	}
 }
 
@@ -146,6 +149,7 @@
 fmod::audio::~audio()
 {
-	while ( m_sounds.size() > 0 )
-		release( m_sounds.get_handle(0) );
+	for ( auto& s : m_sounds )
+		release( &s );
+	m_sounds.clear();
 	FMOD_System_Release( static_cast<FMOD_SYSTEM*>( m_system ) );
 }
