From f3dbb3f676c8f734de37ebbb1aa755c403483479 Mon Sep 17 00:00:00 2001 From: Niels Martin Hansen Date: Tue, 30 Oct 2018 15:54:08 +0100 Subject: Fix #6951: Ensure RailTypes bitfield is always treated as 64 bit Some compilers (like VC++ 2015) will otherwise narrow it in some contexts where it should not be. --- src/rail_type.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/rail_type.h b/src/rail_type.h index ebca7ec35..2bd602a37 100644 --- a/src/rail_type.h +++ b/src/rail_type.h @@ -47,9 +47,10 @@ template <> struct EnumPropsT : MakeEnumPropsT RailTypeByte; /** - * The different roadtypes we support, but then a bitmask of them + * The different railtypes we support, but then a bitmask of them. + * @note Must be treated as a uint64 type, narrowing it causes bit membership tests to give wrong results, as in bug #6951. */ -enum RailTypes { +enum RailTypes : uint64 { RAILTYPES_NONE = 0, ///< No rail types RAILTYPES_RAIL = 1 << RAILTYPE_RAIL, ///< Non-electrified rails RAILTYPES_ELECTRIC = 1 << RAILTYPE_ELECTRIC, ///< Electrified rails -- cgit v1.2.3-54-g00ecf