mirror of https://github.com/OpenTTD/OpenTTD
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.pull/6955/head
parent
350395a6c2
commit
f3dbb3f676
|
@ -47,9 +47,10 @@ template <> struct EnumPropsT<RailType> : MakeEnumPropsT<RailType, byte, RAILTYP
|
||||||
typedef TinyEnumT<RailType> RailTypeByte;
|
typedef TinyEnumT<RailType> 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_NONE = 0, ///< No rail types
|
||||||
RAILTYPES_RAIL = 1 << RAILTYPE_RAIL, ///< Non-electrified rails
|
RAILTYPES_RAIL = 1 << RAILTYPE_RAIL, ///< Non-electrified rails
|
||||||
RAILTYPES_ELECTRIC = 1 << RAILTYPE_ELECTRIC, ///< Electrified rails
|
RAILTYPES_ELECTRIC = 1 << RAILTYPE_ELECTRIC, ///< Electrified rails
|
||||||
|
|
Loading…
Reference in New Issue