diff options
author | Berthold Stoeger <bstoeger@mail.tuwien.ac.at> | 2020-01-30 14:33:27 +0100 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2020-01-30 19:33:21 +0200 |
commit | 62b869b24ada9f6e2e94980774d228dafe1472e2 (patch) | |
tree | d6552129a6fed94e54f6186b0a18367cac32bdb0 | |
parent | 906cce9e88453332806b8d5b620eb9c5a78a99f0 (diff) | |
download | subsurface-62b869b24ada9f6e2e94980774d228dafe1472e2.tar.gz |
CylindersModel: don't crash if accessing non-existing cylinder
It shouldn't happen, but currently we overwrite the displayed_dive
without updating the CylindersModel. Thus, CylindersModel may now
crash when the new displayed_dive has less cylinders than the old
one.
For now, catch this condition. Treat the root cause later.
Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
-rw-r--r-- | qt-models/cylindermodel.cpp | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/qt-models/cylindermodel.cpp b/qt-models/cylindermodel.cpp index dd9ac5e69..2ed81ab72 100644 --- a/qt-models/cylindermodel.cpp +++ b/qt-models/cylindermodel.cpp @@ -134,6 +134,11 @@ QVariant CylindersModel::data(const QModelIndex &index, int role) const if (!index.isValid() || index.row() >= rows) return QVariant(); + if (index.row() >= displayed_dive.cylinders.nr) { + qWarning("CylindersModel and displayed_dive are out of sync!"); + return QVariant(); + } + const cylinder_t *cyl = get_cylinder(&displayed_dive, index.row()); switch (role) { |