(svn r8980) -Fix (FS#656): the industry list should also be (re)set when the number of industries is 0.
This commit is contained in:
		@@ -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");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user