another tweak to maybe-fix crash in Playlist::fade_range()
authorPaul Davis <paul@linuxaudiosystems.com>
Fri, 3 Feb 2017 22:02:37 +0000 (23:02 +0100)
committerPaul Davis <paul@linuxaudiosystems.com>
Fri, 3 Feb 2017 22:03:01 +0000 (23:03 +0100)
libs/ardour/playlist.cc

index af439d7711cf30b20dfb27f584c7eb7dc7f9f612..7cea903d5d3998e894326c5ff19570da1089fc74 100644 (file)
@@ -3319,11 +3319,17 @@ void
 Playlist::fade_range (list<AudioRange>& ranges)
 {
        RegionReadLock rlock (this);
-        for (list<AudioRange>::iterator r = ranges.begin(); r != ranges.end(); ++r) {
-                for (RegionList::const_iterator i = regions.begin(); i != regions.end(); ++i) {
-                        (*i)->fade_range ((*r).start, (*r).end);
-                }
-        }
+       for (list<AudioRange>::iterator r = ranges.begin(); r != ranges.end(); ) {
+               list<AudioRange>::iterator tmpr = r;
+               ++tmpr;
+               for (RegionList::const_iterator i = regions.begin(); i != regions.end(); ) {
+                       RegionList::const_iterator tmpi = i;
+                       ++tmpi;
+                       (*i)->fade_range ((*r).start, (*r).end);
+                       i = tmpi;
+               }
+               r = tmpr;
+       }
 }
 
 uint32_t