From 12674d299030bfe972ed54cdf6d2d34276bcece9 Mon Sep 17 00:00:00 2001 From: Vladimir Golovnev Date: Sat, 28 Oct 2023 10:41:53 +0300 Subject: [PATCH] Prevent crash due to race condition when adding magnet link PR #19792. --- src/base/bittorrent/sessionimpl.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/base/bittorrent/sessionimpl.cpp b/src/base/bittorrent/sessionimpl.cpp index c7e38eb37..091109d71 100644 --- a/src/base/bittorrent/sessionimpl.cpp +++ b/src/base/bittorrent/sessionimpl.cpp @@ -2403,6 +2403,11 @@ bool SessionImpl::cancelDownloadMetadata(const TorrentID &id) return false; const lt::torrent_handle nativeHandle = downloadedMetadataIter.value(); + m_downloadedMetadata.erase(downloadedMetadataIter); + + if (!nativeHandle.is_valid()) + return true; + #ifdef QBT_USES_LIBTORRENT2 const InfoHash infoHash {nativeHandle.info_hashes()}; if (infoHash.isHybrid()) @@ -2413,7 +2418,7 @@ bool SessionImpl::cancelDownloadMetadata(const TorrentID &id) m_downloadedMetadata.remove((altID == downloadedMetadataIter.key()) ? id : altID); } #endif - m_downloadedMetadata.erase(downloadedMetadataIter); + m_nativeSession->remove_torrent(nativeHandle, lt::session::delete_files); return true; }