diff options
author | Dirk Hohndel <dirk@hohndel.org> | 2014-08-19 11:41:09 -0500 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2014-08-19 15:06:39 -0500 |
commit | 77f9bf06fded941aeff049cf5d3c0c3f2785d011 (patch) | |
tree | 2aba8de2c7e0af36a37bd3f0938da19e4e5ff733 /qt-ui/diveplanner.cpp | |
parent | 6ed189f32c466f99167ab6657264a45da4b56e8e (diff) | |
download | subsurface-77f9bf06fded941aeff049cf5d3c0c3f2785d011.tar.gz |
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 <dirk@hohndel.org>
Diffstat (limited to 'qt-ui/diveplanner.cpp')
-rw-r--r-- | qt-ui/diveplanner.cpp | 18 |
1 files changed, 4 insertions, 14 deletions
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(); } |