diff --git a/libtransmission/torrent.c b/libtransmission/torrent.c index 9b54ec37b..b8e40bf93 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 ) ) + if( !err && hashExists( handle, setmeInfo->hash ) ) { err = TR_EDUPLICATE; - - doFree = ( !err || err==TR_EDUPLICATE ) && ( setmeInfo == &tmp ); + doFree = 1; + } if( doFree ) tr_metainfoFree( setmeInfo );