Avoid an input increment of zero (= sigfpe) when given a very long stretch factor
This commit is contained in:
@@ -466,6 +466,10 @@ RubberBandStretcher::Impl::calculateSizes()
|
|||||||
outputIncrement /= 2;
|
outputIncrement /= 2;
|
||||||
inputIncrement = int(outputIncrement / r);
|
inputIncrement = int(outputIncrement / r);
|
||||||
}
|
}
|
||||||
|
while (inputIncrement < 1) {
|
||||||
|
outputIncrement *= 2;
|
||||||
|
inputIncrement = int(outputIncrement / r);
|
||||||
|
}
|
||||||
size_t minwin = roundUp(lrint(outputIncrement * windowIncrRatio));
|
size_t minwin = roundUp(lrint(outputIncrement * windowIncrRatio));
|
||||||
if (windowSize < minwin) windowSize = minwin;
|
if (windowSize < minwin) windowSize = minwin;
|
||||||
|
|
||||||
@@ -501,6 +505,10 @@ RubberBandStretcher::Impl::calculateSizes()
|
|||||||
outputIncrement /= 2;
|
outputIncrement /= 2;
|
||||||
inputIncrement = int(outputIncrement / r);
|
inputIncrement = int(outputIncrement / r);
|
||||||
}
|
}
|
||||||
|
while (inputIncrement < 1) {
|
||||||
|
outputIncrement *= 2;
|
||||||
|
inputIncrement = int(outputIncrement / r);
|
||||||
|
}
|
||||||
windowSize = std::max(windowSize, roundUp(outputIncrement * 6));
|
windowSize = std::max(windowSize, roundUp(outputIncrement * 6));
|
||||||
if (r > 5) while (windowSize < 8192) windowSize *= 2;
|
if (r > 5) while (windowSize < 8192) windowSize *= 2;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user