From be843f3da71f2319660b2a093cce6e74d937aca1 Mon Sep 17 00:00:00 2001 From: Chris Cannam Date: Tue, 15 Sep 2020 15:23:33 +0100 Subject: [PATCH] Avoid an input increment of zero (= sigfpe) when given a very long stretch factor --- src/StretcherImpl.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/StretcherImpl.cpp b/src/StretcherImpl.cpp index b9e3443..cbf8b7b 100644 --- a/src/StretcherImpl.cpp +++ b/src/StretcherImpl.cpp @@ -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; }