mirror of
https://github.com/cookiengineer/audacity
synced 2025-04-30 15:49:41 +02:00
Bug 2754 - Change Tempo & Pitch and Sliding Stretch with selected audio in negative time crash Audacity on windows (error on Mac)
This commit is contained in:
parent
cf666c9bfc
commit
d0ff48f3bd
@ -994,6 +994,9 @@ bool WaveTrack::AddClip(const std::shared_ptr<WaveClip> &clip)
|
||||
void WaveTrack::HandleClear(double t0, double t1,
|
||||
bool addCutLines, bool split)
|
||||
{
|
||||
// For debugging, use an ASSERT so that we stop
|
||||
// closer to the problem.
|
||||
wxASSERT( t1 >= t0 );
|
||||
if (t1 < t0)
|
||||
THROW_INCONSISTENCY_EXCEPTION;
|
||||
|
||||
|
@ -552,10 +552,10 @@ bool EffectChangeSpeed::ProcessOne(WaveTrack * track,
|
||||
double newLength = outputTrack->GetEndTime();
|
||||
if (bResult)
|
||||
{
|
||||
// Silenced samples will be inserted in gaps between clips, so capture where these
|
||||
// Silenced samples will be inserted in gaps between clips, so capture where these
|
||||
// gaps are for later deletion
|
||||
std::vector<std::pair<double, double>> gaps;
|
||||
double last = 0.0;
|
||||
double last = mCurT0;
|
||||
auto clips = track->SortedClipArray();
|
||||
auto front = clips.front();
|
||||
auto back = clips.back();
|
||||
@ -567,12 +567,13 @@ bool EffectChangeSpeed::ProcessOne(WaveTrack * track,
|
||||
if (mCurT0 < st && clip == front) {
|
||||
gaps.push_back(std::make_pair(mCurT0, st));
|
||||
}
|
||||
if (mCurT1 > et && clip == back) {
|
||||
gaps.push_back(std::make_pair(et, mCurT1));
|
||||
}
|
||||
if (last >= mCurT0) {
|
||||
else if (last < st && mCurT0 <= last ) {
|
||||
gaps.push_back(std::make_pair(last, st));
|
||||
}
|
||||
|
||||
if (et < mCurT1 && clip == back) {
|
||||
gaps.push_back(std::make_pair(et, mCurT1));
|
||||
}
|
||||
}
|
||||
last = et;
|
||||
}
|
||||
|
@ -432,7 +432,7 @@ void EffectSBSMS::Finalize(WaveTrack* orig, WaveTrack* out, const TimeWarper *wa
|
||||
// Silenced samples will be inserted in gaps between clips, so capture where these
|
||||
// gaps are for later deletion
|
||||
std::vector<std::pair<double, double>> gaps;
|
||||
double last = 0.0;
|
||||
double last = mCurT0;
|
||||
auto clips = orig->SortedClipArray();
|
||||
auto front = clips.front();
|
||||
auto back = clips.back();
|
||||
@ -444,12 +444,13 @@ void EffectSBSMS::Finalize(WaveTrack* orig, WaveTrack* out, const TimeWarper *wa
|
||||
if (mCurT0 < st && clip == front) {
|
||||
gaps.push_back(std::make_pair(mCurT0, st));
|
||||
}
|
||||
if (mCurT1 > et && clip == back) {
|
||||
gaps.push_back(std::make_pair(et, mCurT1));
|
||||
}
|
||||
if (last >= mCurT0) {
|
||||
else if (last < st && mCurT0 <= last ) {
|
||||
gaps.push_back(std::make_pair(last, st));
|
||||
}
|
||||
|
||||
if (et < mCurT1 && clip == back) {
|
||||
gaps.push_back(std::make_pair(et, mCurT1));
|
||||
}
|
||||
}
|
||||
last = et;
|
||||
}
|
||||
|
@ -403,7 +403,7 @@ void EffectSoundTouch::Finalize(WaveTrack* orig, WaveTrack* out, const TimeWarpe
|
||||
// Silenced samples will be inserted in gaps between clips, so capture where these
|
||||
// gaps are for later deletion
|
||||
std::vector<std::pair<double, double>> gaps;
|
||||
double last = 0.0;
|
||||
double last = mCurT0;
|
||||
auto clips = orig->SortedClipArray();
|
||||
auto front = clips.front();
|
||||
auto back = clips.back();
|
||||
@ -415,12 +415,13 @@ void EffectSoundTouch::Finalize(WaveTrack* orig, WaveTrack* out, const TimeWarpe
|
||||
if (mCurT0 < st && clip == front) {
|
||||
gaps.push_back(std::make_pair(mCurT0, st));
|
||||
}
|
||||
if (mCurT1 > et && clip == back) {
|
||||
gaps.push_back(std::make_pair(et, mCurT1));
|
||||
}
|
||||
if (last >= mCurT0) {
|
||||
else if (last < st && mCurT0 <= last ) {
|
||||
gaps.push_back(std::make_pair(last, st));
|
||||
}
|
||||
|
||||
if (et < mCurT1 && clip == back) {
|
||||
gaps.push_back(std::make_pair(et, mCurT1));
|
||||
}
|
||||
}
|
||||
last = et;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user