summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpeter1138 <peter1138@openttd.org>2006-05-06 20:20:02 +0000
committerpeter1138 <peter1138@openttd.org>2006-05-06 20:20:02 +0000
commit13ba573c68f4ef37befc786196fa83855ed07317 (patch)
tree683837fde5c9eed28275fe082627c5864dce00a0
parentcd9821fb3978b6759ff567819d981d927d4670be (diff)
downloadopenttd-13ba573c68f4ef37befc786196fa83855ed07317.tar.xz
(svn r4751) - NewGRF: when assigning new texts, ignore the feature byte as some sets use generic feature always. Also, don't add vehicle id shifts if the vehicle id is out of range.
-rw-r--r--newgrf.c30
1 files changed, 15 insertions, 15 deletions
diff --git a/newgrf.c b/newgrf.c
index a50070b75..8ed010793 100644
--- a/newgrf.c
+++ b/newgrf.c
@@ -1753,7 +1753,7 @@ static void VehicleNewName(byte *buf, int len)
num = grf_load_byte(&buf);
id = (lang & 0x80) ? grf_load_word(&buf) : grf_load_byte(&buf);
- if (feature < GSF_AIRCRAFT+1) {
+ if (feature <= GSF_AIRCRAFT && id < _vehcounts[feature]) {
id += _vehshifts[feature];
}
endid = id + num;
@@ -1779,22 +1779,23 @@ static void VehicleNewName(byte *buf, int len)
break;
}
- case GSF_STATION: {
- byte station = GB(id, 0, 8);
- if (station >= _cur_grffile->num_stations) {
- grfmsg(GMS_WARN, "VehicleNewName: Attempt to name undefined station 0x%X, ignoring.", station);
- break;
- }
-
+ default:
switch (GB(id, 8, 8)) {
- case 0xC4: { /* Station class name */
- StationClassID sclass = _cur_grffile->stations[station].sclass;
- SetStationClassName(sclass, AddGRFString(_cur_grffile->grfid, id, lang, new_scheme, name));
+ case 0xC4: /* Station class name */
+ if (GB(id, 0, 8) >= _cur_grffile->num_stations) {
+ grfmsg(GMS_WARN, "VehicleNewName: Attempt to name undefined station 0x%X, ignoring.", station);
+ } else {
+ StationClassID sclass = _cur_grffile->stations[GB(id, 0, 8)].sclass;
+ SetStationClassName(sclass, AddGRFString(_cur_grffile->grfid, id, lang, new_scheme, name));
+ }
break;
- }
- case 0xC5: /* Station name */
- _cur_grffile->stations[station].name = AddGRFString(_cur_grffile->grfid, id, lang, new_scheme, name);
+ case 0xC5: /* Station name */
+ if (GB(id, 0, 8) >= _cur_grffile->num_stations) {
+ grfmsg(GMS_WARN, "VehicleNewName: Attempt to name undefined station 0x%X, ignoring.", station);
+ } else {
+ _cur_grffile->stations[station].name = AddGRFString(_cur_grffile->grfid, id, lang, new_scheme, name);
+ }
break;
default:
@@ -1802,7 +1803,6 @@ static void VehicleNewName(byte *buf, int len)
break;
}
break;
- }
#if 0
case GSF_CANAL :