changeset 3860:9fd9b490ed2d draft

(svn r4892) - Fix [FS#162]: SEGV when sorting an empty server list. (glx)
author Darkvater <Darkvater@openttd.org>
date Tue, 16 May 2006 21:13:41 +0000
parents ee7f510fc57a
children ba1f44f864a1
files network_gui.c
diffstat 1 files changed, 8 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/network_gui.c
+++ b/network_gui.c
@@ -151,12 +151,6 @@
 	return (_internal_sort_order & 1) ? -r : r;
 }
 
-static NGameNameSortFunction* const _ngame_sorter[] = {
-	&NGameNameSorter,
-	&NGameClientSorter,
-	&NGameAllowedSorter
-};
-
 /** (Re)build the network game list as its amount has changed because
  * an item has been added or deleted for example
  * @param ngl list_d struct that contains all necessary information for sorting */
@@ -188,13 +182,20 @@
 
 static void SortNetworkGameList(network_ql_d *nqld)
 {
+	static NGameNameSortFunction* const ngame_sorter[] = {
+		&NGameNameSorter,
+		&NGameClientSorter,
+		&NGameAllowedSorter
+	};
+
 	NetworkGameList *item;
 	uint i;
 
 	if (!(nqld->l.flags & VL_RESORT)) return;
+	if (nqld->l.list_length == 0) return;
 
 	_internal_sort_order = nqld->l.flags & VL_DESC;
-	qsort(nqld->sort_list, nqld->l.list_length, sizeof(nqld->sort_list[0]), _ngame_sorter[nqld->l.sort_type]);
+	qsort(nqld->sort_list, nqld->l.list_length, sizeof(nqld->sort_list[0]), ngame_sorter[nqld->l.sort_type]);
 
 	/* After sorting ngl->sort_list contains the sorted items. Put these back
 	 * into the original list. Basically nothing has changed, we are only