current_dive is the selected dive, and displayed_dive is the one we are
currently drawing. They are quite often the same one, but not in the
case of adding a dive for example.

This fixes potential null pointer dereferences in the case of a blank
divelist, and makes sure we use the correct data in the case of adding
and planning dives.

Signed-off-by: Anton Lundin <[email protected]>
---
 qt-ui/profile/diveeventitem.cpp | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/qt-ui/profile/diveeventitem.cpp b/qt-ui/profile/diveeventitem.cpp
index 732d2a3..b9bb448 100644
--- a/qt-ui/profile/diveeventitem.cpp
+++ b/qt-ui/profile/diveeventitem.cpp
@@ -95,7 +95,7 @@ void DiveEventItem::setupToolTipString()
                        // We need to look at row + 1, where the new gas is 
active to find what we are switching to.
                        int cylinder_idx = 
dataModel->data(dataModel->index(result.first().row() + 1, 
DivePlotDataModel::CYLINDERINDEX)).toInt();
                        name += ": ";
-                       name += 
gasname(&current_dive->cylinder[cylinder_idx].gasmix);
+                       name += 
gasname(&displayed_dive.cylinder[cylinder_idx].gasmix);
                } else if (type == SAMPLE_EVENT_PO2 && name == "SP change") {
                        name += QString(":%1").arg((double)value / 1000);
                } else {
@@ -128,7 +128,7 @@ bool DiveEventItem::shouldBeHidden()
         * Don't bother showing them if they match the first gas already
         */
        if (!strcmp(event->name, "gaschange") && event->time.seconds <= 30) {
-               struct dive *dive = current_dive;
+               struct dive *dive = &displayed_dive;
                if (dive && get_cylinder_index(dive, event) == 0)
                        return true;
        }
-- 
1.9.1

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

Reply via email to