diff -u -U 5 -r --new-file -x *~ -x *.[oa] xmms-1.2.9.orig/xmms/playlist.c xmms-1.2.9/xmms/playlist.c --- xmms-1.2.9.orig/xmms/playlist.c Wed Jan 28 22:15:56 2004 +++ xmms-1.2.9/xmms/playlist.c Thu Jan 29 12:01:43 2004 @@ -1575,10 +1575,15 @@ PL_LOCK(); playlist = g_list_reverse(playlist); PL_UNLOCK(); } +static int dojrand(int max) +{ + return (int)((double)rand()*(double)max/(double)RAND_MAX); +} + static GList *playlist_shuffle_list(GList *list) { /* Caller should hold playlist mutex */ /* * Note that this doesn't make a copy of the original list. @@ -1595,18 +1600,18 @@ ptrs = g_new(GList *, len); for (node = list, i = 0; i < len; node = g_list_next(node), i++) ptrs[i] = node; - j = random() % len; + j = dojrand(len); list = ptrs[j]; ptrs[j]->next = NULL; ptrs[j] = ptrs[0]; for (i = 1; i < len; i++) { - j = random() % (len - i); + j = dojrand(len - i); list->prev = ptrs[i + j]; ptrs[i + j]->next = list; list = ptrs[i + j]; ptrs[i + j] = ptrs[i]; }