diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2017-02-03 23:02:37 +0100 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2017-02-03 23:03:01 +0100 |
commit | a21a414615505269bf770ad2358482e698e841af (patch) | |
tree | 7760adc23c6e3d3c56432c638042f8b106fa9915 /libs/ardour/playlist.cc | |
parent | 306647b1d0751bdf39ca45986918240b7892011f (diff) |
another tweak to maybe-fix crash in Playlist::fade_range()
Diffstat (limited to 'libs/ardour/playlist.cc')
-rw-r--r-- | libs/ardour/playlist.cc | 16 |
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 |