Avoid an input increment of zero (= sigfpe) when given a very long stretch factor

This commit is contained in:
Chris Cannam
2020-09-15 15:23:33 +01:00
parent 6de1ab5b68
commit be843f3da7

View File

@@ -466,6 +466,10 @@ RubberBandStretcher::Impl::calculateSizes()
outputIncrement /= 2;
inputIncrement = int(outputIncrement / r);
}
while (inputIncrement < 1) {
outputIncrement *= 2;
inputIncrement = int(outputIncrement / r);
}
size_t minwin = roundUp(lrint(outputIncrement * windowIncrRatio));
if (windowSize < minwin) windowSize = minwin;
@@ -501,6 +505,10 @@ RubberBandStretcher::Impl::calculateSizes()
outputIncrement /= 2;
inputIncrement = int(outputIncrement / r);
}
while (inputIncrement < 1) {
outputIncrement *= 2;
inputIncrement = int(outputIncrement / r);
}
windowSize = std::max(windowSize, roundUp(outputIncrement * 6));
if (r > 5) while (windowSize < 8192) windowSize *= 2;
}