[PATCH 2/2] Fix crash when removing an out-of-profile divepoints
Miika Turkia
miika.turkia at gmail.com
Tue Feb 3 10:44:37 PST 2015
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 <miika.turkia at gmail.com>
---
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
More information about the subsurface
mailing list