(svn r8980) -Fix (FS#656): the industry list should also be (re)set when the number of industries is 0.
--- 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");
}