From e6f0d63e258d9847ed564864ddc04967d780c1de Mon Sep 17 00:00:00 2001 From: Rubidium Date: Mon, 10 May 2021 23:02:44 +0200 Subject: [PATCH] Codechange: comparison result is always the same due to earlier check Practically the length of the handlers not being equal to the number of features is the problem as it means something was forgotten when adding a new feature, so static assert to that and let the existing check on the feature number take care of invalid data from the NewGRFs. --- src/newgrf.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/newgrf.cpp b/src/newgrf.cpp index 29b6a49031..d2b3449c96 100644 --- a/src/newgrf.cpp +++ b/src/newgrf.cpp @@ -4746,6 +4746,7 @@ static void FeatureChangeInfo(ByteReader *buf) /* GSF_ROADTYPES */ RoadTypeChangeInfo, /* GSF_TRAMTYPES */ TramTypeChangeInfo, }; + static_assert(GSF_END == lengthof(handler)); uint8 feature = buf->ReadByte(); uint8 numprops = buf->ReadByte(); @@ -4760,7 +4761,7 @@ static void FeatureChangeInfo(ByteReader *buf) grfmsg(6, "FeatureChangeInfo: Feature 0x%02X, %d properties, to apply to %d+%d", feature, numprops, engine, numinfo); - if (feature >= lengthof(handler) || handler[feature] == nullptr) { + if (handler[feature] == nullptr) { if (feature != GSF_CARGOES) grfmsg(1, "FeatureChangeInfo: Unsupported feature 0x%02X, skipping", feature); return; }