فهرست منبع

Merge pull request #914 from yuriks/bitfield-mask

Common: Fix mask generation in BitField
Yuri Kunde Schlesner 11 سال پیش
والد
کامیت
b0d72e3de1
1فایلهای تغییر یافته به همراه2 افزوده شده و 2 حذف شده
  1. 2 2
      src/common/bit_field.h

+ 2 - 2
src/common/bit_field.h

@@ -161,7 +161,7 @@ public:
         if (std::numeric_limits<T>::is_signed)
         if (std::numeric_limits<T>::is_signed)
         {
         {
             std::size_t shift = 8 * sizeof(T)-bits;
             std::size_t shift = 8 * sizeof(T)-bits;
-            return (T)(((storage & GetMask()) << (shift - position)) >> shift);
+            return (T)((storage << (shift - position)) >> shift);
         }
         }
         else
         else
         {
         {
@@ -189,7 +189,7 @@ private:
 
 
     __forceinline StorageType GetMask() const
     __forceinline StorageType GetMask() const
     {
     {
-        return ((~(StorageTypeU)0) >> (8 * sizeof(T)-bits)) << position;
+        return (((StorageTypeU)~0) >> (8 * sizeof(T)-bits)) << position;
     }
     }
 
 
     StorageType storage;
     StorageType storage;