From 71e3fb8941ddeaa6af0cc833e51e8149f475990d Mon Sep 17 00:00:00 2001 From: arvidn Date: Mon, 7 Mar 2016 23:40:01 -0500 Subject: [PATCH] fix division by zero in super-seeding logic --- ChangeLog | 2 ++ src/torrent.cpp | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/ChangeLog b/ChangeLog index e5db9c4ba..798542c40 100644 --- a/ChangeLog +++ b/ChangeLog @@ -86,6 +86,8 @@ * almost completely changed the storage interface (for custom storage) * added support for hashing pieces in multiple threads + * fix division by zero in super-seeding logic + 1.0.9 release * fix issue in checking outgoing interfaces (when that option is enabled) diff --git a/src/torrent.cpp b/src/torrent.cpp index 7b11f071f..ea9a1638c 100644 --- a/src/torrent.cpp +++ b/src/torrent.cpp @@ -5002,6 +5002,9 @@ namespace libtorrent // seeded by any peer TORRENT_ASSERT(m_super_seeding); + if (!need_loaded()) + return -1; + // do a linear search from the first piece int min_availability = 9999; std::vector avail_vec; @@ -5034,6 +5037,7 @@ namespace libtorrent avail_vec.push_back(i); } + if (avail_vec.empty()) return -1; return avail_vec[random() % avail_vec.size()]; }