From 080100d3b444ec9f7926e86ba2ade83d348d22d9 Mon Sep 17 00:00:00 2001 From: Jonathan Moore Liles Date: Thu, 23 Feb 2012 19:33:09 -0800 Subject: [PATCH] Mixer: Fix an invalid read on strip destruction due to a missing lock. --- mixer/src/Mixer_Strip.C | 1 + mixer/src/Module.C | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/mixer/src/Mixer_Strip.C b/mixer/src/Mixer_Strip.C index e777729..cb02364 100644 --- a/mixer/src/Mixer_Strip.C +++ b/mixer/src/Mixer_Strip.C @@ -94,6 +94,7 @@ Mixer_Strip::~Mixer_Strip ( ) { DMESSAGE( "Destroying mixer strip" ); + _chain->engine()->lock(); /* make sure this gets destroyed before the chain */ fader_tab->clear(); diff --git a/mixer/src/Module.C b/mixer/src/Module.C index 41e38eb..ceb5773 100644 --- a/mixer/src/Module.C +++ b/mixer/src/Module.C @@ -71,12 +71,14 @@ Module::Module ( ) : Fl_Group( 0, 0, 50, 50, "Unnamed" ) Module::~Module ( ) { + /* we assume that the engine for this chain is already locked */ + if ( _editor ) { delete _editor; _editor = NULL; } - + for ( unsigned int i = 0; i < audio_input.size(); ++i ) audio_input[i].disconnect(); for ( unsigned int i = 0; i < audio_output.size(); ++i )