summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/industry_gui.cpp17
1 files changed, 11 insertions, 6 deletions
diff --git a/src/industry_gui.cpp b/src/industry_gui.cpp
index 9cbe0c3f2..cc95a1de6 100644
--- a/src/industry_gui.cpp
+++ b/src/industry_gui.cpp
@@ -552,25 +552,30 @@ static int CDECL GeneralIndustrySorter(const void *a, const void *b)
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");
}