(svn r8980) -Fix (FS#656): the industry list should also be (re)set when the number of industries is 0.
authorrubidium
Fri, 02 Mar 2007 19:57:55 +0000
changeset 6200 10efd7fb90d4
parent 6199 707e6a239878
child 6201 bee01dc45e39
(svn r8980) -Fix (FS#656): the industry list should also be (re)set when the number of industries is 0.
src/industry_gui.cpp
--- a/src/industry_gui.cpp	Fri Mar 02 18:57:54 2007 +0000
+++ b/src/industry_gui.cpp	Fri Mar 02 19:57:55 2007 +0000
@@ -552,25 +552,30 @@
 	return r;
 }
 
+/**
+ * Makes a sorted industry list.
+ * When there are no industries, the list has to be made. This so when one
+ * starts a new game without industries after playing a game with industries
+ * the list is not populated with invalid industries from the previous game.
+ */
 static void MakeSortedIndustryList(void)
 {
 	const Industry* i;
 	int n = 0;
 
-	/* Don't attempt a sort if there are no industries */
-	if (GetNumIndustries() == 0) return;
-
 	/* Create array for sorting */
 	_industry_sort = ReallocT(_industry_sort, GetMaxIndustryIndex() + 1);
 	if (_industry_sort == NULL) error("Could not allocate memory for the industry-sorting-list");
 
-	FOR_ALL_INDUSTRIES(i) _industry_sort[n++] = i;
+	/* Don't attempt a sort if there are no industries */
+	if (GetNumIndustries() != 0) {
+		FOR_ALL_INDUSTRIES(i) _industry_sort[n++] = i;
+		qsort((void*)_industry_sort, n, sizeof(_industry_sort[0]), GeneralIndustrySorter);
+	}
 
 	_num_industry_sort = n;
 	_last_industry = NULL; // used for "cache"
 
-	qsort((void*)_industry_sort, n, sizeof(_industry_sort[0]), GeneralIndustrySorter);
-
 	DEBUG(misc, 3, "Resorting industries list");
 }