diff --git a/Source/Plugins/SpikeSorter/SpikeSortBoxes.cpp b/Source/Plugins/SpikeSorter/SpikeSortBoxes.cpp index a6e38a8c067586fcfaf5e755506b8b3344100e75..7a8f482a699279a16beb6759fc712bc106d94f97 100644 --- a/Source/Plugins/SpikeSorter/SpikeSortBoxes.cpp +++ b/Source/Plugins/SpikeSorter/SpikeSortBoxes.cpp @@ -2129,7 +2129,7 @@ void PCAjob::computeSVD() // delete covariances for (int k = 0; k < dim; k++) - delete cov[k]; + delete[] cov[k]; delete[] cov; cov = nullptr; diff --git a/Source/Plugins/SpikeSorter/SpikeSorter.cpp b/Source/Plugins/SpikeSorter/SpikeSorter.cpp index 3e770324f7e0c9eef383383948c33aa62b58101f..fc182f087205c82a784bcc2c3143c09ee523ebe0 100644 --- a/Source/Plugins/SpikeSorter/SpikeSorter.cpp +++ b/Source/Plugins/SpikeSorter/SpikeSorter.cpp @@ -219,9 +219,6 @@ Electrode::~Electrode() delete[] voltageScale; delete[] channels; delete[] runningStats; - - delete spikeSort; - } Electrode::Electrode(int ID, UniqueIDgenerator* uniqueIDgenerator_, PCAcomputingThread* pth, String _name, int _numChannels, int* _channels, float default_threshold, int pre, int post, float samplingRate , int sourceId, int subIdx) @@ -1125,7 +1122,7 @@ void SpikeSorter::addProbes(String probeType,int numProbes, int nElectrodesPerPr increaseUniqueProbeID(probeType); } } -Array<Electrode*> SpikeSorter::getElectrodes() +const OwnedArray<Electrode>& SpikeSorter::getElectrodes() { return electrodes; } diff --git a/Source/Plugins/SpikeSorter/SpikeSorter.h b/Source/Plugins/SpikeSorter/SpikeSorter.h index 8f93e89a2cb7868ac29b969dbbf9978e16eb1a47..7938615c568ea725afb452840c3955a9d48f6dc2 100644 --- a/Source/Plugins/SpikeSorter/SpikeSorter.h +++ b/Source/Plugins/SpikeSorter/SpikeSorter.h @@ -173,9 +173,11 @@ public: RunningStat* runningStats; SpikeHistogramPlot* spikePlot; - SpikeSortBoxes* spikeSort; + PCAcomputingThread* computingThread; UniqueIDgenerator* uniqueIDgenerator; + + ScopedPointer<SpikeSortBoxes> spikeSort; bool isMonitored; }; @@ -361,7 +363,7 @@ public: void setElectrodeVoltageScale(int electrodeID, int index, float newvalue); std::vector<int> getElectrodeChannels(int ID); - Array<Electrode*> getElectrodes(); + const OwnedArray<Electrode>& getElectrodes(); std::vector<String> electrodeTypes; @@ -437,7 +439,7 @@ private: int& currentChannel); - Array<Electrode*> electrodes; + OwnedArray<Electrode> electrodes; PCAcomputingThread computingThread; JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(SpikeSorter); diff --git a/Source/Plugins/SpikeSorter/SpikeSorterEditor.cpp b/Source/Plugins/SpikeSorter/SpikeSorterEditor.cpp index d1c554dd5e8bffee489ed7604fdb854f3c11a968..5a6d36e5ad2cfc89b8223f9e8067833a320612dc 100644 --- a/Source/Plugins/SpikeSorter/SpikeSorterEditor.cpp +++ b/Source/Plugins/SpikeSorter/SpikeSorterEditor.cpp @@ -463,7 +463,7 @@ void SpikeSorterEditor::buttonEvent(Button* button) SpikeSorter* processor = (SpikeSorter*) getProcessor(); - Array<Electrode*> electrodes = processor->getElectrodes(); + const OwnedArray<Electrode>& electrodes = processor->getElectrodes(); for (int i = 0; i < electrodes.size(); i++) {