summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrubidium <rubidium@openttd.org>2008-09-12 17:14:07 +0000
committerrubidium <rubidium@openttd.org>2008-09-12 17:14:07 +0000
commit8d449825f9264bfb3f05a0a1d1d16e8d8d8a24f2 (patch)
tree839f3669d1354c636aaa2b50c90e94639c20dd46
parent8f42c380398a75d2dda49902e83fe08957818127 (diff)
downloadopenttd-8d449825f9264bfb3f05a0a1d1d16e8d8d8a24f2.tar.xz
(svn r14297) -Fix: one could be trying to get the station name of a station that is outside of the pool.
-rw-r--r--src/strings.cpp13
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];