mirror of
https://github.com/cookiengineer/audacity
synced 2025-07-02 17:23:18 +02:00
Correct TrackList::Swap -- mind the back-pointers in the tracks.
This commit is contained in:
parent
4cf9e0e6d6
commit
c609af3bbe
@ -754,6 +754,22 @@ void TrackList::Swap(TrackList &that)
|
||||
std::swap(mDestructorDeletesTracks, that.mDestructorDeletesTracks);
|
||||
std::swap(head, that.head);
|
||||
std::swap(tail, that.tail);
|
||||
|
||||
{
|
||||
TrackListIterator iter(this);
|
||||
for (Track *t = iter.First(); t; t = iter.Next()) {
|
||||
t->SetOwner(NULL, NULL);
|
||||
t->SetOwner(this, iter.cur);
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
TrackListIterator iter(&that);
|
||||
for (Track *t = iter.First(); t; t = iter.Next()) {
|
||||
t->SetOwner(NULL, NULL);
|
||||
t->SetOwner(&that, iter.cur);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
TrackList::~TrackList()
|
||||
|
@ -252,6 +252,8 @@ class AUDACITY_DLL_API TrackListIterator /* not final */
|
||||
Track *RemoveCurrent(bool deletetrack = false); // returns next
|
||||
|
||||
protected:
|
||||
friend TrackList;
|
||||
|
||||
TrackList *l;
|
||||
TrackListNode *cur;
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user