# HG changeset patch # User Chris Cannam # Date 1318585478 -3600 # Node ID 55969570044e58d103bef253981c6c06dd73d632 # Parent 47e1917c88fcc3c35432a38a70d0304100949553 Fix crashes & valgrind warnings in plugin tester diff -r 47e1917c88fc -r 55969570044e Agent.cpp --- a/Agent.cpp Fri Oct 14 09:59:53 2011 +0100 +++ b/Agent.cpp Fri Oct 14 10:44:38 2011 +0100 @@ -102,12 +102,16 @@ EventList::iterator ei = events.begin(); if (ei != events.end()) { EventList::iterator ni = ei; - prevBeat = (++ni)->time; + if (++ni != events.end()) { + prevBeat = ni->time; + } } while (ei != events.end()) { EventList::iterator ni = ei; - ++ni; - if (ni == events.end()) break; + if (ni == events.end() || + ++ni == events.end()) { + break; + } nextBeat = ni->time; beats = nearbyint((nextBeat - prevBeat) / beatInterval - 0.01); //prefer slow currentInterval = (nextBeat - prevBeat) / beats; diff -r 47e1917c88fc -r 55969570044e Peaks.cpp --- a/Peaks.cpp Fri Oct 14 09:59:53 2011 +0100 +++ b/Peaks.cpp Fri Oct 14 10:44:38 2011 +0100 @@ -58,6 +58,7 @@ vector peaks; int maxp = 0; int mid = 0; + if (data.empty()) return peaks; int end = data.size(); double av = data[0]; while (mid < end) { diff -r 47e1917c88fc -r 55969570044e Peaks.h --- a/Peaks.h Fri Oct 14 09:59:53 2011 +0100 +++ b/Peaks.h Fri Oct 14 10:44:38 2011 +0100 @@ -75,8 +75,14 @@ static void getSlope(const vector &data, double hop, int n, vector &slope); - static double min(const vector &arr) { return arr[imin(arr)]; } - static double max(const vector &arr) { return arr[imax(arr)]; } + static double min(const vector &arr) { + if (arr.empty()) return 0; + return arr[imin(arr)]; + } + static double max(const vector &arr) { + if (arr.empty()) return 0; + return arr[imax(arr)]; + } static int imin(const vector &arr); static int imax(const vector &arr);