From fa86f007c1ef6762bf7fbbab20c6d492435883d6 Mon Sep 17 00:00:00 2001 From: Kearwood Gilbert Date: Wed, 27 Feb 2013 16:01:45 -0800 Subject: [PATCH] Fixed crash in Siren --- KREngine/kraken/KRAudioManager.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/KREngine/kraken/KRAudioManager.cpp b/KREngine/kraken/KRAudioManager.cpp index ed39294..620cdb8 100644 --- a/KREngine/kraken/KRAudioManager.cpp +++ b/KREngine/kraken/KRAudioManager.cpp @@ -212,7 +212,10 @@ void KRAudioManager::renderReverb() float *reverb_accum = m_reverb_input_samples + m_reverb_input_next_sample; memset(reverb_accum, 0, sizeof(float) * KRENGINE_AUDIO_BLOCK_LENGTH); - for(std::set::iterator itr=m_activeAudioSources.begin(); itr != m_activeAudioSources.end(); itr++) { + + std::set active_sources = m_activeAudioSources; + + for(std::set::iterator itr=active_sources.begin(); itr != active_sources.end(); itr++) { KRAudioSource *source = *itr; float reverb_send_level = m_global_reverb_send_level * m_global_gain * source->getReverb(); if(reverb_send_level > 0.0f) { @@ -1309,7 +1312,9 @@ void KRAudioManager::renderHRTF() KRVector3 listener_right = KRVector3::Cross(m_listener_forward, m_listener_up); - for(std::set::iterator itr=m_activeAudioSources.begin(); itr != m_activeAudioSources.end(); itr++) { + std::set active_sources = m_activeAudioSources; + + for(std::set::iterator itr=active_sources.begin(); itr != active_sources.end(); itr++) { KRAudioSource *source = *itr; KRVector3 source_world_position = source->getWorldTranslation(); KRVector3 diff = source_world_position - m_listener_position;