From 7294cdafbf235299e59606b41a43eae4f79a5c03 Mon Sep 17 00:00:00 2001 From: Christophe Dumez Date: Thu, 16 Dec 2010 20:34:37 +0000 Subject: [PATCH] Fix dangerous usage of vector iterator (Thanks cgreco) --- src/properties/trackerlist.cpp | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/src/properties/trackerlist.cpp b/src/properties/trackerlist.cpp index 60de8a239..74084c40e 100644 --- a/src/properties/trackerlist.cpp +++ b/src/properties/trackerlist.cpp @@ -321,18 +321,15 @@ void TrackerList::deleteSelectedTrackers(){ delete item; } // Iterate of trackers and remove selected ones + std::vector remaining_trackers; std::vector trackers = h.trackers(); - std::vector::iterator it = trackers.begin(); - while(it != trackers.end()) { - int index = urls_to_remove.indexOf(misc::toQString((*it).url)); - if(index >= 0) { - trackers.erase(it); - urls_to_remove.removeAt(index); - } else { - it++; + std::vector::iterator it; + for(it = trackers.begin(); it != trackers.end(); it++) { + if(!urls_to_remove.contains(misc::toQString((*it).url))) { + remaining_trackers.push_back(*it); } } - h.replace_trackers(trackers); + h.replace_trackers(remaining_trackers); h.force_reannounce(); // Reload Trackers loadTrackers();