From 433773e0eadb28823fff44151ba5059b1ab56c81 Mon Sep 17 00:00:00 2001 From: Pieter van der Kloet Date: Tue, 30 Oct 2012 11:10:06 +0100 Subject: [PATCH] Fixed segfault in datafilesmodel because of invalid modelindex row --- apps/launcher/model/datafilesmodel.cpp | 13 ++++++++----- apps/launcher/model/datafilesmodel.hpp | 2 +- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/apps/launcher/model/datafilesmodel.cpp b/apps/launcher/model/datafilesmodel.cpp index 40dd78fce..30453425b 100644 --- a/apps/launcher/model/datafilesmodel.cpp +++ b/apps/launcher/model/datafilesmodel.cpp @@ -60,10 +60,10 @@ QVariant DataFilesModel::data(const QModelIndex &index, int role) const if (!index.isValid()) return QVariant(); -// if (index.row() < 0 || index.row() >= mPlugins.size()) -// return QVariant(); + EsmFile *file = item(index.row()); - EsmFile *file = mFiles.at(index.row()); + if (!file) + return QVariant(); const int column = index.column(); @@ -146,7 +146,10 @@ Qt::ItemFlags DataFilesModel::flags(const QModelIndex &index) const if (!index.isValid()) return Qt::NoItemFlags; - EsmFile *file = mFiles.at(index.row()); + EsmFile *file = item(index.row()); + + if (!file) + return Qt::NoItemFlags; if (mAvailableFiles.contains(file->fileName())) { if (index.column() == 0) { @@ -384,7 +387,7 @@ EsmFile* DataFilesModel::findItem(const QString &name) return 0; } -EsmFile* DataFilesModel::item(int row) +EsmFile* DataFilesModel::item(int row) const { if (row >= 0 && row < mFiles.count()) return mFiles.at(row); diff --git a/apps/launcher/model/datafilesmodel.hpp b/apps/launcher/model/datafilesmodel.hpp index 8710ba88d..d45788c3c 100644 --- a/apps/launcher/model/datafilesmodel.hpp +++ b/apps/launcher/model/datafilesmodel.hpp @@ -47,7 +47,7 @@ public: QModelIndex indexFromItem(EsmFile *item) const; EsmFile* findItem(const QString &name); - EsmFile* item(int row); + EsmFile* item(int row) const; signals: void checkedItemsChanged(const QStringList checkedItems, const QStringList unCheckedItems);