changeset 39:2f8a802b62f9

Avoid freqMap overruns for unusual sample rates
author Chris Cannam
date Thu, 13 Nov 2014 12:55:29 +0000
parents a43b53d32735
children 15a7fdc02c58 a68204b9a529
files src/Matcher.cpp
diffstat 1 files changed, 4 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/Matcher.cpp	Thu Nov 13 09:50:30 2014 +0000
+++ b/src/Matcher.cpp	Thu Nov 13 12:55:29 2014 +0000
@@ -202,9 +202,11 @@
     while (i <= params.fftSize/2) {
         double midi = log(i*binWidth/440.0) / log(2.0) * 12 + 69;
         if (midi > 127) midi = 127;
-        freqMap[i++] = crossoverBin + lrint(midi) - crossoverMidi;
+        int target = crossoverBin + lrint(midi) - crossoverMidi;
+        if (target >= freqMapSize) target = freqMapSize - 1;
+        freqMap[i++] = target;
     }
-    assert(freqMapSize == freqMap[i-1] + 1);
+
     if (!silent) {
         cerr << "Standard map size: " << freqMapSize 
              << ";  Crossover at: " << crossoverBin << endl;