From: Charles Kerr Date: Fri, 22 Aug 2008 01:27:00 +0000 (+0000) Subject: undo part of r6616 to address the assertion failure reported by andersos and Waldorf X-Git-Tag: 1.40~433 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=d323a99cddb43461ff705afecb3db72f4eb713f4;p=transmission undo part of r6616 to address the assertion failure reported by andersos and Waldorf --- diff --git a/libtransmission/peer-mgr.c b/libtransmission/peer-mgr.c index 122d859d2..b3eee68f0 100644 --- a/libtransmission/peer-mgr.c +++ b/libtransmission/peer-mgr.c @@ -184,7 +184,7 @@ torrentIsLocked( const Torrent * t ) static int compareAddresses( const struct in_addr * a, const struct in_addr * b ) { - return a->s_addr - b->s_addr; + return tr_compareUint32( a->s_addr, b->s_addr ); } static int @@ -1770,13 +1770,12 @@ compareCandidates( const void * va, const void * vb ) { const struct peer_atom * a = * (const struct peer_atom**) va; const struct peer_atom * b = * (const struct peer_atom**) vb; - int i; if( a->piece_data_time > b->piece_data_time ) return -1; if( a->piece_data_time < b->piece_data_time ) return 1; - if(( i = a->numFails - b->numFails )) - return i; + if( a->numFails != b->numFails ) + return a->numFails < b->numFails ? -1 : 1; if( a->time != b->time ) return a->time < b->time ? -1 : 1; diff --git a/libtransmission/peer-msgs.c b/libtransmission/peer-msgs.c index 6c762a361..f557c9108 100644 --- a/libtransmission/peer-msgs.c +++ b/libtransmission/peer-msgs.c @@ -117,14 +117,6 @@ struct peer_request time_t time_requested; }; -static int -tr_compareUint32( uint32_t a, uint32_t b ) -{ - if( a < b ) return -1; - if( a > b ) return 1; - return 0; -} - static int compareRequest( const void * va, const void * vb ) { diff --git a/libtransmission/utils.c b/libtransmission/utils.c index da494ecc5..717cdb10b 100644 --- a/libtransmission/utils.c +++ b/libtransmission/utils.c @@ -325,6 +325,14 @@ tr_set_compare( const void * va, size_t aCount, **** ***/ +int +tr_compareUint32( uint32_t a, uint32_t b ) +{ + if( a < b ) return -1; + if( a > b ) return 1; + return 0; +} + int tr_compareUint64( uint64_t a, uint64_t b ) { diff --git a/libtransmission/utils.h b/libtransmission/utils.h index 10643e74a..ae4a2e636 100644 --- a/libtransmission/utils.h +++ b/libtransmission/utils.h @@ -218,7 +218,8 @@ void tr_set_compare( const void * a, size_t aCount, tr_set_func in_b_cb, tr_set_func in_both_cb, void * userData ); - + +int tr_compareUint32( uint32_t a, uint32_t b ); int tr_compareUint64( uint64_t a, uint64_t b ); int tr_strcmp( const void * a, const void * b );