From 8e39b06e98c1cf6c07799a2759bbcb6ed2349a76 Mon Sep 17 00:00:00 2001
From: Aaron Cuevas Lopez <aacuelo@teleco.upv.es>
Date: Sun, 5 Nov 2017 05:24:16 +0100
Subject: [PATCH] Fix spike buffer indexing issue

---
 .../BasicSpikeDisplay/SpikeDetector/SpikeDetector.cpp    | 9 ++++++---
 Source/Plugins/SpikeSorter/SpikeSorter.cpp               | 9 ++++++---
 2 files changed, 12 insertions(+), 6 deletions(-)

diff --git a/Source/Plugins/BasicSpikeDisplay/SpikeDetector/SpikeDetector.cpp b/Source/Plugins/BasicSpikeDisplay/SpikeDetector/SpikeDetector.cpp
index 5db1eb2ea..cf3d7d88b 100644
--- a/Source/Plugins/BasicSpikeDisplay/SpikeDetector/SpikeDetector.cpp
+++ b/Source/Plugins/BasicSpikeDisplay/SpikeDetector/SpikeDetector.cpp
@@ -101,8 +101,11 @@ void SpikeDetector::createSpikeChannels()
 
 void SpikeDetector::updateSettings()
 {
-    if (getNumInputs() > 0)
-        overflowBuffer.setSize (getNumInputs(), overflowBufferSize);
+	if (getNumInputs() > 0)
+	{
+		overflowBuffer.setSize(getNumInputs(), overflowBufferSize);
+		overflowBuffer.clear();
+	}
 
 }
 
@@ -516,7 +519,7 @@ float SpikeDetector::getNextSample (int& chan)
     }
     else
     {
-        if (sampleIndex < dataBuffer->getNumSamples())
+        if (sampleIndex < getNumSamples(chan))
             return *dataBuffer->getWritePointer (chan, sampleIndex);
         else
             return 0;
diff --git a/Source/Plugins/SpikeSorter/SpikeSorter.cpp b/Source/Plugins/SpikeSorter/SpikeSorter.cpp
index b95f8cede..6be80a43f 100644
--- a/Source/Plugins/SpikeSorter/SpikeSorter.cpp
+++ b/Source/Plugins/SpikeSorter/SpikeSorter.cpp
@@ -174,8 +174,11 @@ void SpikeSorter::updateSettings()
     mut.enter();
 	sorterReady = false;
     int numChannels = getNumInputs();
-    if (numChannels > 0)
-        overflowBuffer.setSize(getNumInputs(), overflowBufferSize);
+	if (numChannels > 0)
+	{
+		overflowBuffer.setSize(getNumInputs(), overflowBufferSize);
+		overflowBuffer.clear();
+	}
 
     if (channelBuffers != nullptr)
         delete channelBuffers;
@@ -1047,7 +1050,7 @@ float SpikeSorter::getNextSample(int& chan)
         //  useOverflowBuffer = false;
         // std::cout << "  sample index " << sampleIndex << "from regular buffer" << std::endl;
 
-        if (sampleIndex < dataBuffer->getNumSamples())
+        if (sampleIndex < getNumSamples(chan))
             return (*dataBuffer->getReadPointer(chan, sampleIndex));
         else
             return 0;
-- 
GitLab