]> granicus.if.org Git - transmission/commitdiff
undo part of r6616 to address the assertion failure reported by andersos and Waldorf
authorCharles Kerr <charles@transmissionbt.com>
Fri, 22 Aug 2008 01:27:00 +0000 (01:27 +0000)
committerCharles Kerr <charles@transmissionbt.com>
Fri, 22 Aug 2008 01:27:00 +0000 (01:27 +0000)
libtransmission/peer-mgr.c
libtransmission/peer-msgs.c
libtransmission/utils.c
libtransmission/utils.h

index 122d859d270f2721091af36eaa480674a4562e52..b3eee68f0194afcf546057e1bb75421ff4a19ec3 100644 (file)
@@ -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;
index 6c762a36126a5218c49bd74cd52862cd716febe7..f557c9108ac07cfa58c6aa1c205854249646e119 100644 (file)
@@ -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 )
 {
index da494ecc532f58c1a5f43fe2bc6476b0f877e35e..717cdb10bf18b244626098263f4aaad3872167b6 100644 (file)
@@ -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 )
 {
index 10643e74ab05b07195c53169006c9d2a97af1115..ae4a2e636153d71b31e2bde4d7b7a6adf4ae2eff 100644 (file)
@@ -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 );