diff options
-rw-r--r-- | Swiften/Network/DomainNameServiceQuery.cpp | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/Swiften/Network/DomainNameServiceQuery.cpp b/Swiften/Network/DomainNameServiceQuery.cpp index eb999e0..f7ffecc 100644 --- a/Swiften/Network/DomainNameServiceQuery.cpp +++ b/Swiften/Network/DomainNameServiceQuery.cpp @@ -46,19 +46,19 @@ void DomainNameServiceQuery::sortResults(std::vector<DomainNameServiceQuery::Res ResultPriorityComparator comparator; std::sort(queries.begin(), queries.end(), comparator); std::vector<DomainNameServiceQuery::Result>::iterator i = queries.begin(); while (i != queries.end()) { std::vector<DomainNameServiceQuery::Result>::iterator next = std::upper_bound(i, queries.end(), *i, comparator); if (std::distance(i, next) > 1) { int weightSum = std::accumulate(i, next, 0, WeightAccumulator()); std::vector<double> probabilities; - std::transform(i, next, std::back_inserter(probabilities), WeightToProbability(weightSum)); + std::transform(i, next, std::back_inserter(probabilities), WeightToProbability(weightSum > 0 ? weightSum : 1)); // Shuffling the result array and the probabilities in parallel for (size_t j = 0; j < probabilities.size(); ++j) { int selectedIndex = generator.generateWeighedRandomNumber(probabilities.begin() + j, probabilities.end()); std::swap(i[j], i[j + selectedIndex]); std::swap(probabilities.begin()[j], probabilities.begin()[j + selectedIndex]); } } i = next; |