mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
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>
This commit is contained in:
parent
6ed189f32c
commit
77f9bf06fd
4 changed files with 10 additions and 16 deletions
|
@ -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();
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue