From dd525d1613c30e212a8c529cdf3500ce88ab4885 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Wed, 14 Dec 2016 02:25:13 +0100 Subject: [PATCH] release locks before deleting record --- libs/pbd/event_loop.cc | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/libs/pbd/event_loop.cc b/libs/pbd/event_loop.cc index fbbf9c83aa..d3aaa3c672 100644 --- a/libs/pbd/event_loop.cc +++ b/libs/pbd/event_loop.cc @@ -86,17 +86,20 @@ EventLoop::invalidate_request (void* data) * inherit (indirectly) from sigc::trackable. */ - if (ir->event_loop) { - Glib::Threads::Mutex::Lock lm (ir->event_loop->slot_invalidation_mutex()); - Glib::Threads::Mutex::Lock lr (ir->event_loop->request_invalidation_mutex()); - for (list::iterator i = ir->requests.begin(); i != ir->requests.end(); ++i) { - (*i)->valid = false; - (*i)->invalidation = 0; + if (ir->event_loop) { + { + Glib::Threads::Mutex::Lock lm (ir->event_loop->slot_invalidation_mutex()); + Glib::Threads::Mutex::Lock lr (ir->event_loop->request_invalidation_mutex()); + for (list::iterator i = ir->requests.begin(); i != ir->requests.end(); ++i) { + (*i)->valid = false; + (*i)->invalidation = 0; + } } + // should this not always be deleted, regardless if there's an event_loop? delete ir; - } + } - return 0; + return 0; } vector