diff --git a/libtransmission/torrent-ctor.cc b/libtransmission/torrent-ctor.cc index 95d6bf9cf..4c82e7918 100644 --- a/libtransmission/torrent-ctor.cc +++ b/libtransmission/torrent-ctor.cc @@ -100,6 +100,7 @@ bool tr_ctorSetMetainfo(tr_ctor* ctor, char const* metainfo, size_t len, tr_erro bool tr_ctorSetMetainfoFromMagnetLink(tr_ctor* ctor, char const* magnet_link, tr_error** error) { ctor->torrent_filename.clear(); + ctor->metainfo = {}; return ctor->metainfo.parseMagnet(magnet_link != nullptr ? magnet_link : "", error); } @@ -290,9 +291,11 @@ bool tr_ctorGetIncompleteDir(tr_ctor const* ctor, char const** setme) return true; } -tr_torrent_metainfo&& tr_ctorStealMetainfo(tr_ctor* ctor) +tr_torrent_metainfo tr_ctorStealMetainfo(tr_ctor* ctor) { - return std::move(ctor->metainfo); + auto metainfo = tr_torrent_metainfo{}; + std::swap(ctor->metainfo, metainfo); + return metainfo; } tr_torrent_metainfo const* tr_ctorGetMetainfo(tr_ctor const* ctor) diff --git a/libtransmission/torrent.h b/libtransmission/torrent.h index 0880a119c..280e6f681 100644 --- a/libtransmission/torrent.h +++ b/libtransmission/torrent.h @@ -769,7 +769,7 @@ void tr_torrentGotBlock(tr_torrent* tor, tr_block_index_t blockIndex); tr_peer_id_t const& tr_torrentGetPeerId(tr_torrent* tor); -tr_torrent_metainfo&& tr_ctorStealMetainfo(tr_ctor* ctor); +tr_torrent_metainfo tr_ctorStealMetainfo(tr_ctor* ctor); bool tr_ctorSetMetainfoFromFile(tr_ctor* ctor, std::string const& filename, tr_error** error); bool tr_ctorSetMetainfoFromMagnetLink(tr_ctor* ctor, std::string const& filename, tr_error** error);