diff --git a/Changelog b/Changelog index 8f412b76e..bd80c1a53 100644 --- a/Changelog +++ b/Changelog @@ -29,6 +29,7 @@ - BUGFIX: Fixed an arithmetic exception that could happen in ETA calculation - BUGFIX: Fixed Isohunt search engine - BUGFIX: Fixed download from URL function (was buggy) + - BUGFIX: Fixed download button in search engine - COSMETIC: Now displaying the number of downloads in tab title - COSMETIC: Redesigned download from url dialog - COSMETIC: Added a message to warn user that we started download from an url diff --git a/TODO b/TODO index 20930a537..35b93693d 100644 --- a/TODO +++ b/TODO @@ -34,4 +34,9 @@ // Before 0.7.0 - Test tracker authentication - Wait for libtorrent v0.11rc release +- Fix this when deletingSelection sometimes: + terminate called after throwing an instance of 'libtorrent::invalid_handle' + what(): invalid torrent handle used + Abandon + diff --git a/src/GUI.cpp b/src/GUI.cpp index b2151ac28..9657a4ec8 100644 --- a/src/GUI.cpp +++ b/src/GUI.cpp @@ -1159,24 +1159,29 @@ void GUI::deleteSelection(){ QString fileName = sortedIndex.second.data().toString(); // Delete item from download list DLListModel->removeRow(sortedIndex.first); - // Get handle and pause the torrent - torrent_handle h = handles.value(fileName); - s->remove_torrent(h); - // Remove torrent from handles - handles.remove(fileName); - // remove it from scan dir or it will start again - if(isScanningDir){ - QFile::remove(scan_dir+fileName+".torrent"); + // Get handle and remove the torrent + QMap::iterator it = handles.find(fileName); + if(it != handles.end() && it.key() == fileName) { + torrent_handle h = it.value(); + s->remove_torrent(h); + // Remove torrent from handles + handles.erase(it); + // remove it from scan dir or it will start again + if(isScanningDir){ + QFile::remove(scan_dir+fileName+".torrent"); + } + // Remove it from torrent backup directory + torrentBackup.remove(fileName+".torrent"); + torrentBackup.remove(fileName+".fastresume"); + torrentBackup.remove(fileName+".paused"); + torrentBackup.remove(fileName+".incremental"); + // Update info bar + setInfoBar("'" + fileName +"' "+tr("removed.", " removed.")); + --nbTorrents; + tabs->setTabText(0, tr("Transfers") +" ("+QString(misc::toString(nbTorrents).c_str())+")"); + }else{ + std::cout << "Error: Could not find the torrent handle supposed to be removed\n"; } - // Remove it from torrent backup directory - torrentBackup.remove(fileName+".torrent"); - torrentBackup.remove(fileName+".fastresume"); - torrentBackup.remove(fileName+".paused"); - torrentBackup.remove(fileName+".incremental"); - // Update info bar - setInfoBar("'" + fileName +"' "+tr("removed.", " removed.")); - --nbTorrents; - tabs->setTabText(0, tr("Transfers") +" ("+QString(misc::toString(nbTorrents).c_str())+")"); } } } @@ -2090,7 +2095,9 @@ void GUI::on_download_button_clicked(){ QModelIndex index; foreach(index, selectedIndexes){ if(index.column() == NAME){ - downloadFromUrl(index.data().toString()); + // Get Item url + QString url = searchResultsUrls.value(index.data().toString()); + downloadFromUrl(url); setRowColor(index.row(), "red", false); } }