BUGFIX: Fix dangerous usage of vector iterator

This commit is contained in:
Christophe Dumez
2010-12-16 20:37:03 +00:00
parent a67caf1730
commit 53f46875d8
2 changed files with 7 additions and 9 deletions

View File

@@ -321,18 +321,15 @@ void TrackerList::deleteSelectedTrackers(){
delete item;
}
// Iterate of trackers and remove selected ones
std::vector<announce_entry> remaining_trackers;
std::vector<announce_entry> trackers = h.trackers();
std::vector<announce_entry>::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<announce_entry>::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();