mirror of
https://github.com/cookiengineer/audacity
synced 2025-08-16 08:34:10 +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(mDestructorDeletesTracks, that.mDestructorDeletesTracks);
|
||||||
std::swap(head, that.head);
|
std::swap(head, that.head);
|
||||||
std::swap(tail, that.tail);
|
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()
|
TrackList::~TrackList()
|
||||||
|
@ -252,6 +252,8 @@ class AUDACITY_DLL_API TrackListIterator /* not final */
|
|||||||
Track *RemoveCurrent(bool deletetrack = false); // returns next
|
Track *RemoveCurrent(bool deletetrack = false); // returns next
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
friend TrackList;
|
||||||
|
|
||||||
TrackList *l;
|
TrackList *l;
|
||||||
TrackListNode *cur;
|
TrackListNode *cur;
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user