diff --git a/Source/Core/Common/BitSet.h b/Source/Core/Common/BitSet.h index 5d2c88294d..f14ebea9e2 100644 --- a/Source/Core/Common/BitSet.h +++ b/Source/Core/Common/BitSet.h @@ -73,7 +73,7 @@ public: else { int bit = std::countr_zero(m_val); - m_val &= ~(1 << bit); + m_val &= ~(IntTy{1} << bit); m_bit = bit; } return *this; diff --git a/Source/UnitTests/Common/BitSetTest.cpp b/Source/UnitTests/Common/BitSetTest.cpp index 6ec2b74bdb..397f9fecbe 100644 --- a/Source/UnitTests/Common/BitSetTest.cpp +++ b/Source/UnitTests/Common/BitSetTest.cpp @@ -41,6 +41,10 @@ TEST(BitSet, Count) { const auto bitset = BitSet32(number); EXPECT_EQ(bitset.Count(), bitcount); + u32 iterating_count = 0; + for (auto iter = bitset.begin(); iter != bitset.end(); ++iter) + ++iterating_count; + EXPECT_EQ(iterating_count, bitcount); } constexpr std::array, 9> random_64bit_number_bitcount_pairs = { @@ -57,6 +61,10 @@ TEST(BitSet, Count) { const auto bitset = BitSet64(number); EXPECT_EQ(bitset.Count(), bitcount); + u32 iterating_count = 0; + for (auto iter = bitset.begin(); iter != bitset.end(); ++iter) + ++iterating_count; + EXPECT_EQ(iterating_count, bitcount); } }