From 0b6280d632d41e1b60572e3edf2a43ff1a6a65a5 Mon Sep 17 00:00:00 2001 From: Hannu Haahti Date: Mon, 12 Oct 2015 18:35:29 +0300 Subject: [PATCH] EffectChain: check if effect exists before removing Resolves #2407. --- src/core/EffectChain.cpp | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/src/core/EffectChain.cpp b/src/core/EffectChain.cpp index 0a2d1d710..5580ab14a 100644 --- a/src/core/EffectChain.cpp +++ b/src/core/EffectChain.cpp @@ -133,10 +133,20 @@ void EffectChain::appendEffect( Effect * _effect ) void EffectChain::removeEffect( Effect * _effect ) { Engine::mixer()->lock(); - m_effects.erase( qFind( m_effects.begin(), m_effects.end(), _effect ) ); - Engine::mixer()->unlock(); + Effect ** found = qFind( m_effects.begin(), m_effects.end(), _effect ); + if( found == m_effects.end() ) + { + goto fail; + } + m_effects.erase( found ); + + Engine::mixer()->unlock(); emit dataChanged(); + return; + +fail: + Engine::mixer()->unlock(); } @@ -261,8 +271,3 @@ void EffectChain::clear() } m_effects.clear(); } - - - - -