From 86a86f482ffb715d4a594f93cf9ea4a2a312a20e Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Wed, 11 Apr 2012 10:43:27 +0000 Subject: Fix use of invalidated iterator (#4822). git-svn-id: svn://localhost/ardour2/branches/3.0@11893 d708f5d6-7413-0410-9779-e7cbd77b26cf --- libs/ardour/region_factory.cc | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'libs/ardour/region_factory.cc') 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 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; } } -- cgit v1.2.3