mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
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>
This commit is contained in:
parent
6f795a0059
commit
4f9705f3f5
1 changed files with 10 additions and 0 deletions
|
@ -41,6 +41,16 @@ void DivePlannerPointsModel::removeSelectedPoints(const QVector<int> &rows)
|
||||||
int firstRow = rowCount() - rows.count();
|
int firstRow = rowCount() - rows.count();
|
||||||
QVector<int> v2 = rows;
|
QVector<int> v2 = rows;
|
||||||
std::sort(v2.begin(), v2.end(), intLessThan);
|
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);
|
beginRemoveRows(QModelIndex(), firstRow, rowCount() - 1);
|
||||||
for (int i = v2.count() - 1; i >= 0; i--) {
|
for (int i = v2.count() - 1; i >= 0; i--) {
|
||||||
divepoints.remove(v2[i]);
|
divepoints.remove(v2[i]);
|
||||||
|
|
Loading…
Add table
Reference in a new issue