summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArno <am@disconnect.de>2013-01-04 12:53:24 +0100
committerArno <am@disconnect.de>2013-01-04 12:53:24 +0100
commit2fa4f7f525f7138498635204693d94fd3de2d87e (patch)
treefbd106252669494c37951a52ee96d5d5267570e1
parent6ca8a6fab443c0b4ac7f6249c9ef02457ddf4f55 (diff)
downloadSheMov-2fa4f7f525f7138498635204693d94fd3de2d87e.tar.gz
SheMov-2fa4f7f525f7138498635204693d94fd3de2d87e.tar.bz2
SheMov-2fa4f7f525f7138498635204693d94fd3de2d87e.zip
Fix crash in deleting Files from Archive
The QModelIndexList must be a QList<QPersistentModelIndex> to prevent crashes when removeRows is called. The current QModelIndex could already be invalid.
-rw-r--r--filestreemodel.cpp4
-rw-r--r--filestreemodel.h2
-rw-r--r--filestreewidget.cpp4
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<QPersistentModelIndex> &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<QPersistentModelIndex> &files);
bool updateSeries(int newSeries, QList<QPersistentModelIndex> 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("</ul>");
int retval = QMessageBox::critical(this, tr("Question"), message, QMessageBox::Yes | QMessageBox::No);
if(retval == QMessageBox::Yes){
- QModelIndexList realSelected;
- foreach(QModelIndex i, selected){
+ QList<QPersistentModelIndex> realSelected;
+ foreach(QModelIndex i, selected){
realSelected << mProxy->mapToSource(i);
}
mModel->deleteFiles(realSelected);