Unverified Commit 77d33734 authored by Jan Tattermusch's avatar Jan Tattermusch Committed by GitHub

simpler fix

parent 71ac3e5c
...@@ -577,32 +577,7 @@ namespace Google.Protobuf ...@@ -577,32 +577,7 @@ namespace Google.Protobuf
/// </summary> /// </summary>
public bool ReadBool() public bool ReadBool()
{ {
int result = 0; // can't do AND on bytes, it gets implicitly upcasted to int return ReadRawVarint64() != 0;
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();
} }
/// <summary> /// <summary>
...@@ -870,7 +845,7 @@ namespace Google.Protobuf ...@@ -870,7 +845,7 @@ namespace Google.Protobuf
internal static bool? ReadBoolWrapper(CodedInputStream input) internal static bool? ReadBoolWrapper(CodedInputStream input)
{ {
return ReadUInt32Wrapper(input) != 0; return ReadUInt64Wrapper(input) != 0;
} }
internal static uint? ReadUInt32Wrapper(CodedInputStream input) internal static uint? ReadUInt32Wrapper(CodedInputStream input)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment