diff --git a/src/Menus.cpp b/src/Menus.cpp index 242ac1734..b4454d89e 100644 --- a/src/Menus.cpp +++ b/src/Menus.cpp @@ -3375,7 +3375,6 @@ bool AudacityProject::OnEffect(const PluginID & ID, int flags) if (!success) { if (newTrack) { mTracks->Remove(newTrack); - delete newTrack; mTrackPanel->Refresh(false); } @@ -5635,7 +5634,7 @@ void AudacityProject::HandleMixAndRender(bool toNewTrack) selectedCount++; if (!toNewTrack) { - t = iter.RemoveCurrent(true); + t = iter.RemoveCurrent(); } else { t = iter.Next(); }; @@ -6485,7 +6484,7 @@ void AudacityProject::OnRemoveTracks() mMixerBoard->RemoveTrackCluster((WaveTrack*)t); if (!f) f = l; // Capture the track preceeding the first removed track - t = iter.RemoveCurrent(true); + t = iter.RemoveCurrent(); } else { l = t; diff --git a/src/Project.cpp b/src/Project.cpp index 0088e3577..d7e4d3778 100644 --- a/src/Project.cpp +++ b/src/Project.cpp @@ -5019,9 +5019,9 @@ void AudacityProject::RemoveTrack(Track * toRemove) pMixerBoard->RemoveTrackCluster((WaveTrack*)toRemove); // Will remove partner shown in same cluster. } - mTracks->Remove(toRemove, true); + mTracks->Remove(toRemove); if (partner) { - mTracks->Remove(partner, true); + mTracks->Remove(partner); } if (mTracks->IsEmpty()) { diff --git a/src/Track.cpp b/src/Track.cpp index f9d2ee467..a38cb6a1a 100644 --- a/src/Track.cpp +++ b/src/Track.cpp @@ -465,12 +465,12 @@ Track *TrackListIterator::Prev(bool skiplinked) return *cur; } -Track *TrackListIterator::RemoveCurrent(bool deletetrack) +Track *TrackListIterator::RemoveCurrent() { if (!l || l->isNull(cur)) return nullptr; - cur = l->Remove(*cur, deletetrack); + cur = l->Remove(*cur); #ifdef DEBUG_TLI // if we are debugging this bit wxASSERT_MSG((!cur || (*l).Contains((*cur).t)), wxT("cur invalid after deletion of track.")); // check that cur is in the list @@ -902,16 +902,13 @@ void TrackList::Replace(Track * t, Track * with, bool deletetrack) } } -TrackNodePointer TrackList::Remove(Track *t, bool deletetrack) +TrackNodePointer TrackList::Remove(Track *t) { TrackNodePointer result(end()); if (t) { auto node = t->GetNode(); - if (deletetrack) - delete t; - else - t->SetOwner(NULL, TrackNodePointer{}); + delete t; if (!isNull(node)) { result = erase(node); diff --git a/src/Track.h b/src/Track.h index e041ac9df..f312708e8 100644 --- a/src/Track.h +++ b/src/Track.h @@ -257,7 +257,7 @@ class AUDACITY_DLL_API TrackListIterator /* not final */ virtual Track *Prev(bool skiplinked = false); virtual Track *Last(bool skiplinked = false); - Track *RemoveCurrent(bool deletetrack = false); // returns next + Track *RemoveCurrent(); // returns next protected: friend TrackList; @@ -435,7 +435,7 @@ class AUDACITY_DLL_API TrackList final : public wxEvtHandler, public ListOfTrack /// Remove this Track or all children of this TrackList. /// Return an iterator to what followed the removed track. - TrackNodePointer Remove(Track *t, bool deletetrack = false); + TrackNodePointer Remove(Track *t); /// Make the list empty void Clear(bool deleteTracks = false); diff --git a/src/effects/Effect.cpp b/src/effects/Effect.cpp index 8c5cd17eb..83a02bd6d 100644 --- a/src/effects/Effect.cpp +++ b/src/effects/Effect.cpp @@ -2145,7 +2145,7 @@ Effect::AddedAnalysisTrack::~AddedAnalysisTrack() { if (mpEffect) { // not committed -- DELETE the label track - mpEffect->mTracks->Remove(mpTrack, true); + mpEffect->mTracks->Remove(mpTrack); } } @@ -2234,7 +2234,7 @@ void Effect::ReplaceProcessedTracks(const bool bGoodResult) while (i < cnt && mOMap[i] != o) { Track *t = (Track *) mIMap[i]; if (t) { - mTracks->Remove(t, true); + mTracks->Remove(t); } i++; } @@ -2273,7 +2273,7 @@ void Effect::ReplaceProcessedTracks(const bool bGoodResult) while (i < cnt) { Track *t = (Track *) mIMap[i]; if (t) { - mTracks->Remove((Track *)mIMap[i], true); + mTracks->Remove((Track *)mIMap[i]); } i++; } diff --git a/src/effects/StereoToMono.cpp b/src/effects/StereoToMono.cpp index a99aba2bd..31debcd97 100644 --- a/src/effects/StereoToMono.cpp +++ b/src/effects/StereoToMono.cpp @@ -167,7 +167,6 @@ bool EffectStereoToMono::ProcessOne(int count) mRightTrack->SetLinked(false); mLeftTrack->SetChannel(Track::MonoChannel); mOutputTracks->Remove(mRightTrack); - delete mRightTrack; delete [] leftBuffer; delete [] rightBuffer; diff --git a/src/toolbars/ControlToolBar.cpp b/src/toolbars/ControlToolBar.cpp index 54132a9e1..b2664f748 100644 --- a/src/toolbars/ControlToolBar.cpp +++ b/src/toolbars/ControlToolBar.cpp @@ -1011,7 +1011,6 @@ void ControlToolBar::OnRecord(wxCommandEvent &evt) // msmeyer: Delete recently added tracks if opening stream fails for (unsigned int i = 0; i < newRecordingTracks.size(); i++) { trackList->Remove(newRecordingTracks[i]); - delete newRecordingTracks[i]; } }