diff --git a/src/industry_gui.cpp b/src/industry_gui.cpp
index 9cbe0c3f26..cc95a1de68 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");
 }