From 2063056243f3d67c6f5124b4075c0054dbae2f3f Mon Sep 17 00:00:00 2001 From: Paul Licameli Date: Mon, 10 Sep 2018 17:50:10 -0400 Subject: [PATCH] Bug221 re-fixed with better exception safety: see commit 1deff18... ... in case only some tracks successfully allocate, de-allocate all before propagating the exception. --- src/toolbars/ControlToolBar.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/toolbars/ControlToolBar.cpp b/src/toolbars/ControlToolBar.cpp index 29a874e25..20a586d9f 100644 --- a/src/toolbars/ControlToolBar.cpp +++ b/src/toolbars/ControlToolBar.cpp @@ -1399,7 +1399,7 @@ void ControlToolBar::SetupCutPreviewTracks(double WXUNUSED(playStart), double cu ClearCutPreviewTracks(); AudacityProject *p = GetActiveProject(); if (p) { - mCutPreviewTracks = TrackList::Create(); + auto cutPreviewTracks = TrackList::Create(); // Find first selected track (stereo or mono) and duplicate it const Track *track1 = NULL, *track2 = NULL; TrackListIterator it(p->GetTracks()); @@ -1426,13 +1426,13 @@ void ControlToolBar::SetupCutPreviewTracks(double WXUNUSED(playStart), double cu } // use NOTHROW-GUARANTEE: - mCutPreviewTracks->Add(std::move(new1)); + cutPreviewTracks->Add(std::move(new1)); if (track2) - mCutPreviewTracks->Add(std::move(new2)); + cutPreviewTracks->Add(std::move(new2)); } } - if( !track1 ) - ClearCutPreviewTracks(); + if( track1 ) + mCutPreviewTracks = cutPreviewTracks; } }