From 2fa4f7f525f7138498635204693d94fd3de2d87e Mon Sep 17 00:00:00 2001 From: Arno Date: Fri, 4 Jan 2013 12:53:24 +0100 Subject: Fix crash in deleting Files from Archive The QModelIndexList must be a QList to prevent crashes when removeRows is called. The current QModelIndex could already be invalid. --- filestreemodel.cpp | 4 ++-- filestreemodel.h | 2 +- filestreewidget.cpp | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/filestreemodel.cpp b/filestreemodel.cpp index 5fa926e..dd954ac 100644 --- a/filestreemodel.cpp +++ b/filestreemodel.cpp @@ -485,8 +485,8 @@ bool FilesTreeModel::deleteFile(const QModelIndex &file){ return true; } -bool FilesTreeModel::deleteFiles(const QModelIndexList &files){ - foreach(QModelIndex i, files){ +bool FilesTreeModel::deleteFiles(const QList &files){ + foreach(QPersistentModelIndex i, files){ bool retval = deleteFile(i); if(!retval){ return false; diff --git a/filestreemodel.h b/filestreemodel.h index df3831b..278f257 100644 --- a/filestreemodel.h +++ b/filestreemodel.h @@ -51,7 +51,7 @@ class FilesTreeModel : public SmTreeModel { //file manipulation bool addFile(const QString &fullPath, int type, int quality, int filePart, int seriesPartId, int dvd = -1); bool deleteFile(const QModelIndex &file); - bool deleteFiles(const QModelIndexList &files); + bool deleteFiles(const QList &files); bool updateSeries(int newSeries, QList files); //misc diff --git a/filestreewidget.cpp b/filestreewidget.cpp index 19dbbdf..9422268 100644 --- a/filestreewidget.cpp +++ b/filestreewidget.cpp @@ -129,8 +129,8 @@ void FilesTreeWidget::removeFiles(){ message.append(""); int retval = QMessageBox::critical(this, tr("Question"), message, QMessageBox::Yes | QMessageBox::No); if(retval == QMessageBox::Yes){ - QModelIndexList realSelected; - foreach(QModelIndex i, selected){ + QList realSelected; + foreach(QModelIndex i, selected){ realSelected << mProxy->mapToSource(i); } mModel->deleteFiles(realSelected); -- cgit v1.2.3-70-g09d2