diff options
author | Miika Turkia <miika.turkia@gmail.com> | 2015-02-03 20:44:37 +0200 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2015-02-03 11:27:41 -0800 |
commit | 4f9705f3f54fc14d6b38123160f07015c41f3519 (patch) | |
tree | 329d14e08b7ba6a31ac5c638425b589b0f8099da /qt-ui/diveplanner.cpp | |
parent | 6f795a0059f5b1540d62bab30bc62422717420bb (diff) | |
download | subsurface-4f9705f3f54fc14d6b38123160f07015c41f3519.tar.gz |
Fix crash when removing an out-of-profile divepoints
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@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'qt-ui/diveplanner.cpp')
-rw-r--r-- | qt-ui/diveplanner.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/qt-ui/diveplanner.cpp b/qt-ui/diveplanner.cpp index 67b84d0bd..84555bcd6 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]); |