diff options
Diffstat (limited to 'libs/ardour/session.cc')
-rw-r--r-- | libs/ardour/session.cc | 13 |
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 */ |