(svn r26066) -Fix: possible NULL dereference when resolving industry scope

This commit is contained in:
rubidium 2013-11-23 18:07:11 +00:00
parent c29f18f357
commit d18852170b

View File

@ -447,13 +447,15 @@ TownScopeResolver *IndustriesResolverObject::GetTown()
{ {
if (this->town_scope == NULL) { if (this->town_scope == NULL) {
Town *t = NULL; Town *t = NULL;
bool readonly = true;
if (this->industries_scope.industry != NULL) { if (this->industries_scope.industry != NULL) {
t = this->industries_scope.industry->town; t = this->industries_scope.industry->town;
readonly = this->industries_scope.industry->index == INVALID_INDUSTRY;
} else if (this->industries_scope.tile != INVALID_TILE) { } else if (this->industries_scope.tile != INVALID_TILE) {
t = ClosestTownFromTile(this->industries_scope.tile, UINT_MAX); t = ClosestTownFromTile(this->industries_scope.tile, UINT_MAX);
} }
if (t == NULL) return NULL; if (t == NULL) return NULL;
this->town_scope = new TownScopeResolver(this, t, this->industries_scope.industry->index == INVALID_INDUSTRY); this->town_scope = new TownScopeResolver(this, t, readonly);
} }
return this->town_scope; return this->town_scope;
} }