From 77f9bf06fded941aeff049cf5d3c0c3f2785d011 Mon Sep 17 00:00:00 2001 From: Dirk Hohndel Date: Tue, 19 Aug 2014 11:41:09 -0500 Subject: Planner: correctly free divedatapoints Simply setting the pointer to NULL leaks memory. And that C++ recursive two function implementation... oh boy. Signed-off-by: Dirk Hohndel --- qt-ui/diveplanner.cpp | 18 ++++-------------- qt-ui/diveplanner.h | 1 - 2 files changed, 4 insertions(+), 15 deletions(-) (limited to 'qt-ui') diff --git a/qt-ui/diveplanner.cpp b/qt-ui/diveplanner.cpp index 6a6f2d6c3..999850183 100644 --- a/qt-ui/diveplanner.cpp +++ b/qt-ui/diveplanner.cpp @@ -1000,7 +1000,7 @@ void DivePlannerPointsModel::cancelPlan() } } setPlanMode(NOTHING); - diveplan.dp = NULL; + free_dps(&diveplan); emit planCanceled(); } @@ -1089,7 +1089,7 @@ void DivePlannerPointsModel::clear() void DivePlannerPointsModel::createTemporaryPlan() { // Get the user-input and calculate the dive info - diveplan.dp = NULL; + free_dps(&diveplan); int lastIndex = -1; for (int i = 0; i < rowCount(); i++) { divedatapoint p = at(i); @@ -1137,17 +1137,7 @@ void DivePlannerPointsModel::createTemporaryPlan() void DivePlannerPointsModel::deleteTemporaryPlan() { - deleteTemporaryPlan(diveplan.dp); - diveplan.dp = NULL; -} - -void DivePlannerPointsModel::deleteTemporaryPlan(struct divedatapoint *dp) -{ - if (!dp) - return; - - deleteTemporaryPlan(dp->next); - free(dp); + free_dps(&diveplan); } void DivePlannerPointsModel::createPlan() @@ -1166,7 +1156,7 @@ void DivePlannerPointsModel::createPlan() // Remove and clean the diveplan, so we don't delete // the dive by mistake. - diveplan.dp = NULL; + free_dps(&diveplan); setPlanMode(NOTHING); planCreated(); } diff --git a/qt-ui/diveplanner.h b/qt-ui/diveplanner.h index 468893bba..da2f6526b 100644 --- a/qt-ui/diveplanner.h +++ b/qt-ui/diveplanner.h @@ -101,7 +101,6 @@ private: Mode mode; bool recalc; QVector divepoints; - void deleteTemporaryPlan(struct divedatapoint *dp); QVector backupSamples; // For editing added dives. QVector > oldGases; QDateTime startTime; -- cgit v1.2.3-70-g09d2