diff --git a/libtransmission/peer.c b/libtransmission/peer.c index 6b7bda971..6a07d061d 100644 --- a/libtransmission/peer.c +++ b/libtransmission/peer.c @@ -685,7 +685,7 @@ writeEnd: all peers for 2, and so on. Randomize our starting point into "pool" to reduce such overlap */ int piecesLeft = poolSize; - int p = (int)(tr_date() % poolSize); + int p = piecesLeft ? tr_rand(piecesLeft) : 0; for( ; openSlots>0 && piecesLeft>0; --piecesLeft, p=(p+1)%poolSize ) { const int piece = pool[p]; diff --git a/libtransmission/utils.c b/libtransmission/utils.c index c9a40245c..d6d9f1170 100644 --- a/libtransmission/utils.c +++ b/libtransmission/utils.c @@ -168,6 +168,9 @@ void tr_msg( int level, char * msg, ... ) int tr_rand( int sup ) { static int init = 0; + + assert( sup > 0 ); + if( !init ) { srand( tr_date() );