summaryrefslogtreecommitdiff
path: root/libs/ardour/session.cc
diff options
context:
space:
mode:
Diffstat (limited to 'libs/ardour/session.cc')
-rw-r--r--libs/ardour/session.cc13
1 files changed, 11 insertions, 2 deletions
diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc
index ae5466dda8..11cb658008 100644
--- a/libs/ardour/session.cc
+++ b/libs/ardour/session.cc
@@ -469,12 +469,21 @@ Session::~Session ()
cerr << "delete regions\n";
#endif /* TRACK_DESTRUCTION */
- for (RegionList::iterator i = regions.begin(); i != regions.end(); ++i) {
+ for (RegionList::iterator i = regions.begin(); i != regions.end(); ) {
+ RegionList::iterator tmp;
+
+ tmp = i;
+ ++tmp;
+
+ cerr << "dropping refs on a region (" << i->second->name() << " @ " << i->second << ") with UC = " << i->second.use_count() << endl;
i->second->drop_references ();
+ cerr << "AFTER: UC = " << i->second.use_count() << endl;
+
+ i = tmp;
}
regions.clear ();
-
+
#ifdef TRACK_DESTRUCTION
cerr << "delete routes\n";
#endif /* TRACK_DESTRUCTION */