diff --git a/Source/Plugins/SpikeSorter/SpikeSortBoxes.cpp b/Source/Plugins/SpikeSorter/SpikeSortBoxes.cpp
index 07fa1baa789510ac08c5b72f4cc5e01e650f3a3e..a2191529d4295cabb2c1ac594fe83c2a28bc06f3 100644
--- a/Source/Plugins/SpikeSorter/SpikeSortBoxes.cpp
+++ b/Source/Plugins/SpikeSorter/SpikeSortBoxes.cpp
@@ -882,6 +882,7 @@ void SpikeSortBoxes::projectOnPrincipalComponents(SorterSpikePtr so)
         if ((spikeBufferIndex == bufferSize -1 && !bPCAcomputed && !bPCAJobSubmitted) || bRePCA)
         {
             bPCAJobSubmitted = true;
+	    bPCAcomputed = false;
             bRePCA = false;
             // submit a new job to compute the spike buffer.
             PCAJobPtr job = new PCAjob(spikeBuffer,pc1,pc2, pc1min, pc2min, pc1max, pc2max, bPCAjobFinished);
diff --git a/Source/Plugins/SpikeSorter/SpikeSorter.cpp b/Source/Plugins/SpikeSorter/SpikeSorter.cpp
index fc182f087205c82a784bcc2c3143c09ee523ebe0..b95f8cede44d2347326b83b0b85f0ca946c1dd46 100644
--- a/Source/Plugins/SpikeSorter/SpikeSorter.cpp
+++ b/Source/Plugins/SpikeSorter/SpikeSorter.cpp
@@ -463,6 +463,7 @@ bool SpikeSorter::addElectrode(int nChans, String name, double Depth)
         eventlog += String(chans[k])+ " " + name;
 
     //addNetworkEventToQueue(StringTS(eventlog));
+    delete[] chans;
 
     resetElectrode(newElectrode);
     electrodes.add(newElectrode);
@@ -1302,6 +1303,9 @@ void SpikeSorter::loadCustomParametersFromXml()
                             newElectrode->thresholds[k] = thres[k];
                             newElectrode->isActive[k] = isActive[k];
                         }
+			delete[] channels;
+			delete[] thres;
+			delete[] isActive;
 
                         newElectrode->advancerID = advancerID;
                         newElectrode->depthOffsetMM = depthOffsetMM;