diff options
-rw-r--r-- | include/ipmid/message/unpack.hpp | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/include/ipmid/message/unpack.hpp b/include/ipmid/message/unpack.hpp index d96928f..94f80f1 100644 --- a/include/ipmid/message/unpack.hpp +++ b/include/ipmid/message/unpack.hpp @@ -207,7 +207,9 @@ struct UnpackSingle<std::bitset<N>> { return -1; } - fixed_uint_t<details::bitStreamSize> bitmask = ((1 << count) - 1); + fixed_uint_t<details::bitStreamSize> bitmask = + ~fixed_uint_t<details::bitStreamSize>(0) >> + (details::bitStreamSize - count); t |= (p.bitStream & bitmask).convert_to<unsigned long long>(); p.bitStream >>= count; p.bitCount -= count; |