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 <[email protected]>
---
 qt-models/diveplannermodel.cpp | 7 ++++++-
 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 49fc502..b5db3f0 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 084c9f1..d0f2f91 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;
        }
-- 
2.1.4

_______________________________________________
subsurface mailing list
[email protected]
http://lists.subsurface-divelog.org/cgi-bin/mailman/listinfo/subsurface

Reply via email to