summaryrefslogtreecommitdiff
path: root/libs/ardour/region_factory.cc
diff options
context:
space:
mode:
authorCarl Hetherington <carl@carlh.net>2012-04-11 10:43:27 +0000
committerCarl Hetherington <carl@carlh.net>2012-04-11 10:43:27 +0000
commit86a86f482ffb715d4a594f93cf9ea4a2a312a20e (patch)
tree286071a579173ef128d49d033f9899a806b9cf34 /libs/ardour/region_factory.cc
parentb788b7c56c27abedec24e826f39b65ebe17c8d78 (diff)
Fix use of invalidated iterator (#4822).
git-svn-id: svn://localhost/ardour2/branches/3.0@11893 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour/region_factory.cc')
-rw-r--r--libs/ardour/region_factory.cc9
1 files changed, 8 insertions, 1 deletions
diff --git a/libs/ardour/region_factory.cc b/libs/ardour/region_factory.cc
index 5e408b2786..f739483821 100644
--- a/libs/ardour/region_factory.cc
+++ b/libs/ardour/region_factory.cc
@@ -620,10 +620,17 @@ RegionFactory::remove_regions_using_source (boost::shared_ptr<Source> src)
{
Glib::Mutex::Lock lm (region_map_lock);
- for (RegionMap::iterator i = region_map.begin(); i != region_map.end(); ++i) {
+ RegionMap::iterator i = region_map.begin();
+ while (i != region_map.end()) {
+
+ RegionMap::iterator j = i;
+ ++j;
+
if (i->second->uses_source (src)) {
region_map.erase (i);
}
+
+ i = j;
}
}