Fix use of invalidated iterator (#4822).
authorCarl Hetherington <carl@carlh.net>
Wed, 11 Apr 2012 10:43:27 +0000 (10:43 +0000)
committerCarl Hetherington <carl@carlh.net>
Wed, 11 Apr 2012 10:43:27 +0000 (10:43 +0000)
git-svn-id: svn://localhost/ardour2/branches/3.0@11893 d708f5d6-7413-0410-9779-e7cbd77b26cf

libs/ardour/region_factory.cc

index 5e408b2786a4181ab7d87c21f27f2b80c5eaf1ff..f7394838215617f0b085b602f2c6b090232d37ef 100644 (file)
@@ -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;
        }
 }