From e4ed68918b0b7bf3e66ce633180bf09fb7577840 Mon Sep 17 00:00:00 2001 From: Arvid Norberg Date: Tue, 16 Dec 2008 01:26:35 +0000 Subject: [PATCH] fixed bug when torrent file have announce-list but no valid trackers. #444 --- ChangeLog | 2 ++ src/torrent_info.cpp | 23 +++++++++++++---------- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/ChangeLog b/ChangeLog index 662fb51c0..9aeedd717 100644 --- a/ChangeLog +++ b/ChangeLog @@ -25,6 +25,8 @@ release 0.14.2 * removed support for boost-1.33 and earlier (probably didn't work) * fixed potential freezes issues at shutdown * improved error message for python setup script + * fixed bug when torrent file included announce-list, but no valid + tracker urls release 0.14.1 diff --git a/src/torrent_info.cpp b/src/torrent_info.cpp index a75dcf225..9aeb6e1b9 100644 --- a/src/torrent_info.cpp +++ b/src/torrent_info.cpp @@ -575,20 +575,23 @@ namespace libtorrent } } - // shuffle each tier - std::vector::iterator start = m_urls.begin(); - std::vector::iterator stop; - int current_tier = m_urls.front().tier; - for (stop = m_urls.begin(); stop != m_urls.end(); ++stop) + if (!m_urls.empty()) { - if (stop->tier != current_tier) + // shuffle each tier + std::vector::iterator start = m_urls.begin(); + std::vector::iterator stop; + int current_tier = m_urls.front().tier; + for (stop = m_urls.begin(); stop != m_urls.end(); ++stop) { - std::random_shuffle(start, stop); - start = stop; - current_tier = stop->tier; + if (stop->tier != current_tier) + { + std::random_shuffle(start, stop); + start = stop; + current_tier = stop->tier; + } } + std::random_shuffle(start, stop); } - std::random_shuffle(start, stop); }