gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r4660 - gnunet-qt/src/plugins/fs


From: gnunet
Subject: [GNUnet-SVN] r4660 - gnunet-qt/src/plugins/fs
Date: Sat, 10 Mar 2007 14:33:39 -0700 (MST)

Author: durner
Date: 2007-03-10 14:33:39 -0700 (Sat, 10 Mar 2007)
New Revision: 4660

Modified:
   gnunet-qt/src/plugins/fs/fs.cc
Log:
fix crash when aborting multiple downloads

Modified: gnunet-qt/src/plugins/fs/fs.cc
===================================================================
--- gnunet-qt/src/plugins/fs/fs.cc      2007-03-10 21:07:07 UTC (rev 4659)
+++ gnunet-qt/src/plugins/fs/fs.cc      2007-03-10 21:33:39 UTC (rev 4660)
@@ -439,14 +439,24 @@
 
 void GFSPlugin::cancelDLClicked()
 {
+  typedef QList<struct FSUI_DownloadList *> GCancelList;
+  
   QModelIndexList list;
   QModelIndexList::iterator it;
+  GCancelList cancelList;
+  GCancelList::iterator itCancel;
   QItemSelectionModel *selModel = treeDownloads->selectionModel();
   QAbstractItemModel *dataModel = treeDownloads->model();
   
   list = selModel->selectedRows();
+  
+  // collect handles of downloads first because indexes shift as rows are 
removed
   for (it = list.begin(); it != list.end(); it++)
-    downloadCntrl->cancel((struct FSUI_DownloadList *) dataModel->data(*it, 
Qt::UserRole).value<void *>());
+    cancelList.push_back((struct FSUI_DownloadList *) dataModel->data(*it, 
Qt::UserRole).value<void *>());
+  
+  // remove downloads
+  for (itCancel = cancelList.begin(); itCancel != cancelList.end(); itCancel++)
+    downloadCntrl->cancel(*itCancel);
 }
 
 void GFSPlugin::clearULClicked()





reply via email to

[Prev in Thread] Current Thread [Next in Thread]