Browse Source

Fix possible crash on adding magnet links

adaptive-webui-19844
Christophe Dumez 14 years ago
parent
commit
e931209860
  1. 4
      src/qtlibtorrent/qbtsession.cpp
  2. 4
      src/qtlibtorrent/qtorrenthandle.cpp

4
src/qtlibtorrent/qbtsession.cpp

@ -1100,7 +1100,6 @@ void QBtSession::loadTorrentTempData(QTorrentHandle h, QString savePath, bool ma
if(TorrentTempData::hasTempData(hash)) { if(TorrentTempData::hasTempData(hash)) {
// sequential download // sequential download
h.set_sequential_download(TorrentTempData::isSequential(hash)); h.set_sequential_download(TorrentTempData::isSequential(hash));
h.prioritize_first_last_piece(TorrentTempData::isSequential(hash));
// The following is useless for newly added magnet // The following is useless for newly added magnet
if(!magnet) { if(!magnet) {
@ -1109,6 +1108,9 @@ void QBtSession::loadTorrentTempData(QTorrentHandle h, QString savePath, bool ma
TorrentTempData::getFilesPriority(hash, fp); TorrentTempData::getFilesPriority(hash, fp);
h.prioritize_files(fp); h.prioritize_files(fp);
// Prioritize first/last piece
h.prioritize_first_last_piece(TorrentTempData::isSequential(hash));
// Update file names // Update file names
const QStringList files_path = TorrentTempData::getFilesPath(hash); const QStringList files_path = TorrentTempData::getFilesPath(hash);
bool force_recheck = false; bool force_recheck = false;

4
src/qtlibtorrent/qtorrenthandle.cpp

@ -606,10 +606,12 @@ void QTorrentHandle::prioritize_first_last_piece(int file_index, bool b) const {
} }
void QTorrentHandle::prioritize_first_last_piece(bool b) const { void QTorrentHandle::prioritize_first_last_piece(bool b) const {
if(!torrent_handle::has_metadata()) return;
// Download first and last pieces first for all media files in the torrent // Download first and last pieces first for all media files in the torrent
torrent_info::file_iterator it; torrent_info::file_iterator it;
int index = 0; int index = 0;
for(it = get_torrent_info().begin_files(); it != get_torrent_info().end_files(); it++) { torrent_info t = get_torrent_info();
for(it = t.begin_files(); it != t.end_files(); it++) {
const QString ext = misc::toQStringU(it->path.string()).split(".").last(); const QString ext = misc::toQStringU(it->path.string()).split(".").last();
if(misc::isPreviewable(ext) && torrent_handle::file_priority(index) > 0) { if(misc::isPreviewable(ext) && torrent_handle::file_priority(index) > 0) {
qDebug() << "File" << it->path.string().c_str() << "is previewable, toggle downloading of first/last pieces first"; qDebug() << "File" << it->path.string().c_str() << "is previewable, toggle downloading of first/last pieces first";

Loading…
Cancel
Save