diff --git a/libtransmission/torrent.c b/libtransmission/torrent.c index e3ffe6416..9b54ec37b 100644 --- a/libtransmission/torrent.c +++ b/libtransmission/torrent.c @@ -422,11 +422,12 @@ tr_torrentParse( const tr_handle * handle, return TR_EINVALID; err = tr_metainfoParse( setmeInfo, metainfo, handle->tag ); - doFree = !err && ( setmeInfo == &tmp ); if( !err && hashExists( handle, setmeInfo->hash ) ) err = TR_EDUPLICATE; + doFree = ( !err || err==TR_EDUPLICATE ) && ( setmeInfo == &tmp ); + if( doFree ) tr_metainfoFree( setmeInfo );