Use identical conversions of tracker names

PR #18146.
Closes #18070.

The problem is that conversions between std::string and QString is not mutually equivalent (i.e. QString::fromStdString(stdStr).toStdString() == stdStr isn't always true).
This commit is contained in:
Vladimir Golovnev 2022-12-08 17:02:47 +03:00 committed by GitHub
commit 24bf8eef6d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -1530,20 +1530,21 @@ void TorrentImpl::refreshTrackerEntries() const
const std::vector<lt::announce_entry> nativeTrackers = m_nativeHandle.trackers(); const std::vector<lt::announce_entry> nativeTrackers = m_nativeHandle.trackers();
Q_ASSERT(nativeTrackers.size() == m_trackerEntries.size()); Q_ASSERT(nativeTrackers.size() == m_trackerEntries.size());
for (TrackerEntry &trackerEntry : m_trackerEntries) for (const lt::announce_entry &announceEntry : nativeTrackers)
{ {
const auto updatedTrackerIter = m_updatedTrackerEntries.find(trackerEntry.url); const auto trackerURL = QString::fromStdString(announceEntry.url);
const auto updatedTrackerIter = m_updatedTrackerEntries.find(trackerURL);
if (updatedTrackerIter == m_updatedTrackerEntries.end()) if (updatedTrackerIter == m_updatedTrackerEntries.end())
continue; continue;
const auto nativeTrackerIter = std::find_if(nativeTrackers.cbegin(), nativeTrackers.cend() const auto trackerIter = std::find_if(m_trackerEntries.begin(), m_trackerEntries.end()
, [trackerURL = trackerEntry.url.toStdString()](const lt::announce_entry &announceEntry) , [&trackerURL](const TrackerEntry &trackerEntry)
{ {
return (announceEntry.url == trackerURL); return (trackerEntry.url == trackerURL);
}); });
Q_ASSERT(nativeTrackerIter != nativeTrackers.cend()); Q_ASSERT(trackerIter != m_trackerEntries.end());
const lt::announce_entry &announceEntry = *nativeTrackerIter; TrackerEntry &trackerEntry = *trackerIter;
#ifdef QBT_USES_LIBTORRENT2 #ifdef QBT_USES_LIBTORRENT2
updateTrackerEntry(trackerEntry, announceEntry, m_nativeHandle.info_hashes(), updatedTrackerIter.value()); updateTrackerEntry(trackerEntry, announceEntry, m_nativeHandle.info_hashes(), updatedTrackerIter.value());
#else #else