From 636fb8d732a4aeccb1fcdbce7b2f082b7b0c2b55 Mon Sep 17 00:00:00 2001 From: Mark Liversedge Date: Sun, 13 Apr 2014 21:44:46 +0100 Subject: [PATCH] Fix CPPlot SEGV .. crashes on low power files (eg. power = 0.1w) --- src/CPPlot.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/CPPlot.cpp b/src/CPPlot.cpp index f25512d78..abd83033f 100644 --- a/src/CPPlot.cpp +++ b/src/CPPlot.cpp @@ -941,7 +941,8 @@ CPPlot::plotRide(RideItem *rideItem) for (int i = 0; i <= maxNonZero; ++i) { energyArray[i] = timeArray[i] * rideCache->meanMaxArray(RideFile::watts)[i] * 60.0 / 1000.0; } - rideCurve->setSamples(timeArray.data() + 1, energyArray.constData() + 1, maxNonZero - 1); + rideCurve->setSamples(timeArray.data() + 1, energyArray.constData() + 1, + maxNonZero > 0 ? maxNonZero-1 : 0); } else { @@ -961,7 +962,8 @@ CPPlot::plotRide(RideItem *rideItem) samples[i] = rideCache->meanMaxArray(rideSeries)[i] / bestsCache->meanMaxArray(rideSeries)[i] * 100.00f; } - rideCurve->setSamples(timeArray.data() + 1, samples.data() + 1, maxNonZero -1); + rideCurve->setSamples(timeArray.data() + 1, samples.data() + 1, + maxNonZero > 0 ? maxNonZero-1 : 0); // did we get over 100% .. because if so // we need to set the maxY on the RHS to reflect that @@ -974,7 +976,8 @@ CPPlot::plotRide(RideItem *rideItem) // JUST A NORMAL CURVE rideCurve->setYAxis(yLeft); - rideCurve->setSamples(timeArray.data() + 1, rideCache->meanMaxArray(rideSeries).constData() + 1, maxNonZero - 1); + rideCurve->setSamples(timeArray.data() + 1, rideCache->meanMaxArray(rideSeries).constData() + 1, + maxNonZero > 0 ? maxNonZero-1 : 0); } }