Bladeren bron

simpler fix

Jan Tattermusch 5 jaren geleden
bovenliggende
commit
77d33734cf
1 gewijzigde bestanden met toevoegingen van 3 en 28 verwijderingen
  1. 3 28
      csharp/src/Google.Protobuf/CodedInputStream.cs

+ 3 - 28
csharp/src/Google.Protobuf/CodedInputStream.cs

@@ -577,32 +577,7 @@ namespace Google.Protobuf
         /// </summary>
         public bool ReadBool()
         {
-            int result = 0; // can't do AND on bytes, it gets implicitly upcasted to int
-            byte index = 0;
-            if (bufferPos < bufferSize) // check if we have at least one byte for the most likely case of a one byte 1 or 0
-            {
-                result = buffer[bufferPos++];
-                if (result < 128)
-                {
-                    return result != 0;
-                }
-                result &= 0x7f;
-                index++;
-            }
-
-            do
-            {
-                byte b = ReadRawByte();
-                result |= b & 0x7F; // OR all bytes together since we don't care about the actual value, just whether is more than zero
-                if (b < 0x80)
-                {
-                    return result != 0;
-                }
-                index++;
-            }
-            while (index < 10);
-
-            throw InvalidProtocolBufferException.MalformedVarint();
+            return ReadRawVarint64() != 0;
         }
 
         /// <summary>
@@ -870,7 +845,7 @@ namespace Google.Protobuf
 
         internal static bool? ReadBoolWrapper(CodedInputStream input)
         {
-            return ReadUInt32Wrapper(input) != 0;
+            return ReadUInt64Wrapper(input) != 0;
         }
 
         internal static uint? ReadUInt32Wrapper(CodedInputStream input)
@@ -1679,4 +1654,4 @@ namespace Google.Protobuf
         }
 #endregion
     }
-}
+}