Fix multiple bugs in g_srv_target_list_sort()
authorDan Winship <danw@gnome.org>
Thu, 28 May 2009 19:27:04 +0000 (15:27 -0400)
committerDan Winship <danw@gnome.org>
Mon, 1 Jun 2009 18:31:48 +0000 (14:31 -0400)
commitce6fbd623115c88cfdf0f5ed36b01cca201ba78e
tree3bd265414f2a10c2994fff63e2bec2f0c08b5f7c
parent1ca91a212503e64a150c78cdb9ce0489efaa7a59
Fix multiple bugs in g_srv_target_list_sort()

In particular, targets with weight 0 should be very UNlikely to be
selected, not very likely, as they were before. However, even ignoring
that bug in the logic, there was an additional bug (swapping list
items would cause the 0-weight items to get re-ordered incorrectly
anyway), and the code contained several fencepost errors.

This patch also adds gio/tests/srvtarget.c, which confirms that for a
sample list of targets, we now generate all possible correct random
sortings and no incorrect sortings, and the correct sortings occur in
roughly the expected proportions (though if the current code is
still wrong, those proportions may be wrong as well).

http://bugzilla.gnome.org/show_bug.cgi?id=583398
gio/gsrvtarget.c
gio/tests/Makefile.am
gio/tests/srvtarget.c [new file with mode: 0644]