summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/ipmid/message/unpack.hpp4
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;
OpenPOWER on IntegriCloud