diff options
author | Miika Turkia <miika.turkia@gmail.com> | 2015-10-08 18:59:37 +0300 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2015-10-08 16:42:27 -0700 |
commit | c0ac73a478c5407467019d61ed2536bef90edd62 (patch) | |
tree | 8742e59a87f4fcddea7523841e87461ec22aab70 | |
parent | 640c746a1faa77ea13c93582c59b391f7e2816de (diff) | |
download | subsurface-c0ac73a478c5407467019d61ed2536bef90edd62.tar.gz |
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>
-rw-r--r-- | qt-models/diveplannermodel.cpp | 7 | ||||
-rw-r--r-- | qt-ui/mainwindow.cpp | 2 |
2 files changed, 7 insertions, 2 deletions
diff --git a/qt-models/diveplannermodel.cpp b/qt-models/diveplannermodel.cpp index 49fc50229..b5db3f07e 100644 --- a/qt-models/diveplannermodel.cpp +++ b/qt-models/diveplannermodel.cpp @@ -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; diff --git a/qt-ui/mainwindow.cpp b/qt-ui/mainwindow.cpp index 084c9f10f..d0f2f9127 100644 --- a/qt-ui/mainwindow.cpp +++ b/qt-ui/mainwindow.cpp @@ -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; } |