Fix a crash when editing manually added dive

I have manually added dives from an ancient version of Subsurface.
Trying to edit these caused Subsurface to crash due to comparison of
string of dc.model that did not exist (to a static string). And further
down the execution path we were crashing as there were no samples
associated with the dive.

See #941

Signed-off-by: Miika Turkia <miika.turkia@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Miika Turkia 2015-10-08 18:59:37 +03:00 committed by Dirk Hohndel
parent 640c746a1f
commit c0ac73a478
2 changed files with 7 additions and 2 deletions

View file

@ -78,7 +78,12 @@ void DivePlannerPointsModel::loadFromDive(dive *d)
// if yes then the first sample should be marked
// if it is we only add the manually entered samples as waypoints to the diveplan
// otherwise we have to add all of them
bool hasMarkedSamples = d->dc.sample[0].manually_entered;
bool hasMarkedSamples = false;
if (d->dc.samples)
hasMarkedSamples = d->dc.sample[0].manually_entered;
// if this dive has more than 100 samples (so it is probably a logged dive),
// average samples so we end up with a total of 100 samples.
int plansamples = d->dc.samples <= 100 ? d->dc.samples : 100;

View file

@ -798,7 +798,7 @@ void MainWindow::on_actionEditDive_triggered()
}
const bool isTripEdit = dive_list()->selectedTrips().count() >= 1;
if (!current_dive || isTripEdit || strcmp(current_dive->dc.model, "manually added dive")) {
if (!current_dive || isTripEdit || (current_dive->dc.model && strcmp(current_dive->dc.model, "manually added dive"))) {
QMessageBox::warning(this, tr("Warning"), tr("Trying to edit a dive that's not a manually added dive."));
return;
}