From db22e56c07414d11e41a29a3f4c70e0cbbc12d3c Mon Sep 17 00:00:00 2001 From: Nathan Curtis Date: Wed, 7 May 2008 00:03:47 +0000 Subject: [PATCH] That was exciting to track down. If your supplied sort.compareFunction(...) returns a value other than -1, 0 or 1, Sort.findItem() goes into an infinite loop. Guard against that here. git-svn-id: svn+ssh://src.earth.threerings.net/nenya/trunk@487 ed5b42cb-e716-0410-a449-f6a68f950b19 --- src/as/com/threerings/flex/PlayerList.as | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/as/com/threerings/flex/PlayerList.as b/src/as/com/threerings/flex/PlayerList.as index ba01ea6b..38aa5a1b 100644 --- a/src/as/com/threerings/flex/PlayerList.as +++ b/src/as/com/threerings/flex/PlayerList.as @@ -66,6 +66,7 @@ public class PlayerList extends VBox var sort :Sort = new Sort(); sort.compareFunction = sortFunction; _players.sort = sort; + _players.refresh(); } public function get scrollBarOnLeft () :Boolean @@ -140,9 +141,10 @@ public class PlayerList extends VBox var data1 :Object = (o1 as Array)[1]; var data2 :Object = (o2 as Array)[1]; if (data1 is Comparable && data2 is Comparable) { - return (data1 as Comparable).compareTo(data2); + var compare :int = (data1 as Comparable).compareTo(data2); + return compare > 0 ? 1 : (compare < 0 ? -1 : 0); } else { - // default to actionscript's magical great than or less than operators + // default to actionscript's magical greater than or less than operators return data1 > data2 ? -1 : (data1 < data2 ? 1 : 0); } }