diff --git a/src/base/bittorrent/session.cpp b/src/base/bittorrent/session.cpp index 9995f649d..1a3aaa332 100644 --- a/src/base/bittorrent/session.cpp +++ b/src/base/bittorrent/session.cpp @@ -1693,7 +1693,10 @@ void Session::processShareLimits() { qDebug("Processing share limits..."); - for (TorrentHandleImpl *const torrent : asConst(m_torrents)) { + // We shouldn't iterate over `m_torrents` in the loop below + // since `deleteTorrent()` modifies it indirectly + const QHash torrents {m_torrents}; + for (TorrentHandleImpl *const torrent : torrents) { if (torrent->isSeed() && !torrent->isForced()) { if (torrent->ratioLimit() != TorrentHandle::NO_RATIO_LIMIT) { const qreal ratio = torrent->realRatio();