From 047395c663b112448250697720d1be047caa3ff0 Mon Sep 17 00:00:00 2001 From: Jonathan G Rennison Date: Sun, 2 Aug 2015 23:36:59 +0100 Subject: [PATCH] Remove unnecessary and buggy field-packing in struct SlXvFeatureTest. --- src/saveload/extended_ver_sl.cpp | 8 ++------ src/saveload/extended_ver_sl.h | 17 +++++++---------- 2 files changed, 9 insertions(+), 16 deletions(-) diff --git a/src/saveload/extended_ver_sl.cpp b/src/saveload/extended_ver_sl.cpp index 7127faf7b6..be40cad17b 100644 --- a/src/saveload/extended_ver_sl.cpp +++ b/src/saveload/extended_ver_sl.cpp @@ -60,13 +60,9 @@ bool SlXvFeatureTest::IsFeaturePresent(uint16 savegame_version, uint16 savegame_ { bool savegame_version_ok = savegame_version >= savegame_version_from && savegame_version <= savegame_version_to; - SlXvFeatureIndex feature = static_cast(GB(this->value, 0, 16)); - if (feature == XSLFI_NULL) return savegame_version_ok; + if (this->feature == XSLFI_NULL) return savegame_version_ok; - uint16 min_version = GB(this->value, 16, 16); - uint16 max_version = GB(this->value, 32, 16); - SlXvFeatureTestOperator op = static_cast(GB(this->value, 48, 16)); - bool feature_ok = SlXvIsFeaturePresent(feature, min_version, max_version); + bool feature_ok = SlXvIsFeaturePresent(this->feature, this->min_version, this->max_version); switch (op) { case XSLFTO_OR: diff --git a/src/saveload/extended_ver_sl.h b/src/saveload/extended_ver_sl.h index a7e9496944..3dffee5a7c 100644 --- a/src/saveload/extended_ver_sl.h +++ b/src/saveload/extended_ver_sl.h @@ -40,20 +40,17 @@ enum SlXvFeatureTestOperator { */ struct SlXvFeatureTest { private: - uint64 value; + uint16 min_version; + uint16 max_version; + SlXvFeatureIndex feature; + SlXvFeatureTestOperator op; public: SlXvFeatureTest() - : value(0) { } + : min_version(0), max_version(0), feature(XSLFI_NULL), op(XSLFTO_OR) { } - SlXvFeatureTest(SlXvFeatureTestOperator op, SlXvFeatureIndex feature, uint16 min_version = 1, uint16 max_version = 0xFFFF) - { - this->value = 0; - SB(this->value, 0, 16, feature); - SB(this->value, 16, 16, min_version); - SB(this->value, 32, 16, max_version); - SB(this->value, 48, 16, op); - } + SlXvFeatureTest(SlXvFeatureTestOperator op_, SlXvFeatureIndex feature_, uint16 min_version_ = 1, uint16 max_version_ = 0xFFFF) + : min_version(min_version_), max_version(max_version_), feature(feature_), op(op_) { } bool IsFeaturePresent(uint16 savegame_version, uint16 savegame_version_from, uint16 savegame_version_to) const; };