summaryrefslogtreecommitdiff
path: root/libs/ardour
diff options
context:
space:
mode:
authorCarl Hetherington <carl@carlh.net>2011-03-01 17:39:57 +0000
committerCarl Hetherington <carl@carlh.net>2011-03-01 17:39:57 +0000
commit35ea41228023b3070ad2b12feca79e6d2fcfc4db (patch)
tree703ec26324d0761e9877dbf355206fa74953e965 /libs/ardour
parent28d3dd69de2d99fabcc556f4c41aafdf3c1cb1cc (diff)
Fix crash on session close.
git-svn-id: svn://localhost/ardour2/branches/3.0@9005 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour')
-rw-r--r--libs/ardour/session.cc10
1 files changed, 7 insertions, 3 deletions
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<RouteList> 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 ();