From 3c65731f38ead2d8c7045c8665daa7cb67a692a0 Mon Sep 17 00:00:00 2001 From: Paul Licameli Date: Sun, 27 Nov 2016 10:39:46 -0500 Subject: [PATCH] Sequence::InsertSilence gives strong guarantee --- src/Sequence.cpp | 11 ++++++----- src/Sequence.h | 2 +- src/WaveClip.cpp | 6 +----- 3 files changed, 8 insertions(+), 11 deletions(-) diff --git a/src/Sequence.cpp b/src/Sequence.cpp index bb0df2917..8e1e9dc0f 100644 --- a/src/Sequence.cpp +++ b/src/Sequence.cpp @@ -657,14 +657,16 @@ bool Sequence::SetSilence(sampleCount s0, sampleCount len) return Set(NULL, mSampleFormat, s0, len); } -bool Sequence::InsertSilence(sampleCount s0, sampleCount len) +void Sequence::InsertSilence(sampleCount s0, sampleCount len) +// STRONG-GUARANTEE { // Quick check to make sure that it doesn't overflow if (Overflows((mNumSamples.as_double()) + (len.as_double()))) - return false; + //THROW_INCONSISTENCY_EXCEPTION + ; if (len <= 0) - return true; + return; // Create a NEW track containing as much silence as we // need to insert, and then call Paste to do the insertion. @@ -700,9 +702,8 @@ bool Sequence::InsertSilence(sampleCount s0, sampleCount len) sTrack.mNumSamples = pos; + // use STRONG-GUARANTEE Paste(s0, &sTrack); - - return true; } bool Sequence::AppendAlias(const wxString &fullPath, diff --git a/src/Sequence.h b/src/Sequence.h index 192dc4f68..c416a4d48 100644 --- a/src/Sequence.h +++ b/src/Sequence.h @@ -129,7 +129,7 @@ class PROFILE_DLL_API Sequence final : public XMLTagHandler{ void AppendBlockFile(const BlockFilePtr &blockFile); bool SetSilence(sampleCount s0, sampleCount len); - bool InsertSilence(sampleCount s0, sampleCount len); + void InsertSilence(sampleCount s0, sampleCount len); const std::shared_ptr &GetDirManager() { return mDirManager; } diff --git a/src/WaveClip.cpp b/src/WaveClip.cpp index 8d0f1f435..a224f2461 100644 --- a/src/WaveClip.cpp +++ b/src/WaveClip.cpp @@ -1631,11 +1631,7 @@ void WaveClip::InsertSilence(double t, double len) auto slen = (sampleCount)floor(len * mRate + 0.5); // use STRONG-GUARANTEE - if (!GetSequence()->InsertSilence(s0, slen)) - { - wxASSERT(false); - return; - } + GetSequence()->InsertSilence(s0, slen); // use NOFAIL-GUARANTEE OffsetCutLines(t, len);