diff options
author | rubidium <rubidium@openttd.org> | 2008-09-12 17:14:07 +0000 |
---|---|---|
committer | rubidium <rubidium@openttd.org> | 2008-09-12 17:14:07 +0000 |
commit | 8d449825f9264bfb3f05a0a1d1d16e8d8d8a24f2 (patch) | |
tree | 839f3669d1354c636aaa2b50c90e94639c20dd46 /src | |
parent | 8f42c380398a75d2dda49902e83fe08957818127 (diff) | |
download | openttd-8d449825f9264bfb3f05a0a1d1d16e8d8d8a24f2.tar.xz |
(svn r14297) -Fix: one could be trying to get the station name of a station that is outside of the pool.
Diffstat (limited to 'src')
-rw-r--r-- | src/strings.cpp | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/src/strings.cpp b/src/strings.cpp index 065b617fb..f12b4beee 100644 --- a/src/strings.cpp +++ b/src/strings.cpp @@ -838,11 +838,18 @@ static char* FormatString(char* buff, const char* str, const int64* argv, uint c } case SCC_STATION_NAME: { // {STATION} - const Station* st = GetStation(GetInt32(&argv)); + StationID sid = GetInt32(&argv); - if (!st->IsValid()) { // station doesn't exist anymore + if (!IsValidStationID(sid)) { + /* The station doesn't exist anymore. The only place where we might + * be "drawing" an invalid station is in the case of cargo that is + * in transit. */ buff = GetStringWithArgs(buff, STR_UNKNOWN_DESTINATION, NULL, last); - } else if (st->name != NULL) { + break; + } + + const Station *st = GetStation(sid); + if (st->name != NULL) { buff = strecpy(buff, st->name, last); } else { int64 temp[3]; |