From 3c96d47c36a5cefbf07917a14ddb6728a7dc39ac Mon Sep 17 00:00:00 2001 From: peter1138 Date: Mon, 28 Jul 2008 06:16:34 +0000 Subject: [PATCH] (svn r13855) -Fix [FS#2157]: Cargo type lookup was incorrect for GRFv7 files without a translation table. --- src/newgrf_cargo.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/newgrf_cargo.cpp b/src/newgrf_cargo.cpp index 790c0b3e89..1ff8de73f4 100644 --- a/src/newgrf_cargo.cpp +++ b/src/newgrf_cargo.cpp @@ -109,9 +109,15 @@ CargoID GetCargoTranslation(uint8 cargo, const GRFFile *grffile, bool usebit) /* Else the cargo value is a 'climate independent' 'bitnum' */ if (HasBit(_cargo_mask, cargo)) return GetCargoIDByBitnum(cargo); } else { - /* If the GRF contains a translation table (and the cargo is in bounds) - * then get the cargo ID for the label */ - if (cargo < grffile->cargo_max) return GetCargoIDByLabel(grffile->cargo_list[cargo]); + /* If the GRF contains a translation table... */ + if (grffile->cargo_max > 0) { + /* ...and the cargo is in bounds, then get the cargo ID for + * the label */ + if (cargo < grffile->cargo_max) return GetCargoIDByLabel(grffile->cargo_list[cargo]); + } else { + /* Else the cargo value is a 'climate independent' 'bitnum' */ + if (HasBit(_cargo_mask, cargo)) return GetCargoIDByBitnum(cargo); + } } return CT_INVALID; }