summaryrefslogtreecommitdiff
path: root/libs/ardour/playlist.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2017-02-03 23:02:37 +0100
committerPaul Davis <paul@linuxaudiosystems.com>2017-02-03 23:03:01 +0100
commita21a414615505269bf770ad2358482e698e841af (patch)
tree7760adc23c6e3d3c56432c638042f8b106fa9915 /libs/ardour/playlist.cc
parent306647b1d0751bdf39ca45986918240b7892011f (diff)
another tweak to maybe-fix crash in Playlist::fade_range()
Diffstat (limited to 'libs/ardour/playlist.cc')
-rw-r--r--libs/ardour/playlist.cc16
1 files changed, 11 insertions, 5 deletions
diff --git a/libs/ardour/playlist.cc b/libs/ardour/playlist.cc
index af439d7711..7cea903d5d 100644
--- a/libs/ardour/playlist.cc
+++ b/libs/ardour/playlist.cc
@@ -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