diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc index 3d1e2956f0..63f5dc8e43 100644 --- a/libs/ardour/session.cc +++ b/libs/ardour/session.cc @@ -301,12 +301,16 @@ Session::destroy () } routes.flush (); - boost::shared_ptr r = routes.reader (); - DEBUG_TRACE (DEBUG::Destruction, "delete sources\n"); - for (SourceMap::iterator i = sources.begin(); i != sources.end(); ++i) { + for (SourceMap::iterator i = sources.begin(); i != sources.end(); ) { + + SourceMap::iterator j = i; + ++j; + DEBUG_TRACE(DEBUG::Destruction, string_compose ("Dropping for source %1 ; pre-ref = %2\n", i->second->path(), i->second.use_count())); i->second->drop_references (); + + i = j; } sources.clear ();