We can end up having a divepoint that is outside the dive profile. In
this case, we used to crash, but this hack prevents the index out of
range issue.

Fixes #784

Signed-off-by: Miika Turkia <[email protected]>
---
 qt-ui/diveplanner.cpp | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/qt-ui/diveplanner.cpp b/qt-ui/diveplanner.cpp
index 67b84d0..84555bc 100644
--- a/qt-ui/diveplanner.cpp
+++ b/qt-ui/diveplanner.cpp
@@ -41,6 +41,16 @@ void DivePlannerPointsModel::removeSelectedPoints(const 
QVector<int> &rows)
        int firstRow = rowCount() - rows.count();
        QVector<int> v2 = rows;
        std::sort(v2.begin(), v2.end(), intLessThan);
+
+       /*
+        * If we end up having divepoints that are not within the dive
+        * profile, we need to just skip the removal to prevent
+        * crashing due to index out of range.
+        */
+
+       if (rowCount() >= divepoints.count())
+               return;
+
        beginRemoveRows(QModelIndex(), firstRow, rowCount() - 1);
        for (int i = v2.count() - 1; i >= 0; i--) {
                divepoints.remove(v2[i]);
-- 
1.9.1

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

Reply via email to