THRIFT-1930: C# generates unsigned byte for Thrift "byte" type
Patch: Jens Geyer
diff --git a/lib/csharp/src/Protocol/TBinaryProtocol.cs b/lib/csharp/src/Protocol/TBinaryProtocol.cs
index 682078b..27c2c94 100644
--- a/lib/csharp/src/Protocol/TBinaryProtocol.cs
+++ b/lib/csharp/src/Protocol/TBinaryProtocol.cs
@@ -92,7 +92,7 @@
else
{
WriteString(message.Name);
- WriteByte((byte)message.Type);
+ WriteByte((sbyte)message.Type);
WriteI32(message.SeqID);
}
}
@@ -111,7 +111,7 @@
public override void WriteFieldBegin(TField field)
{
- WriteByte((byte)field.Type);
+ WriteByte((sbyte)field.Type);
WriteI16(field.ID);
}
@@ -121,13 +121,13 @@
public override void WriteFieldStop()
{
- WriteByte((byte)TType.Stop);
+ WriteByte((sbyte)TType.Stop);
}
public override void WriteMapBegin(TMap map)
{
- WriteByte((byte)map.KeyType);
- WriteByte((byte)map.ValueType);
+ WriteByte((sbyte)map.KeyType);
+ WriteByte((sbyte)map.ValueType);
WriteI32(map.Count);
}
@@ -137,7 +137,7 @@
public override void WriteListBegin(TList list)
{
- WriteByte((byte)list.ElementType);
+ WriteByte((sbyte)list.ElementType);
WriteI32(list.Count);
}
@@ -147,7 +147,7 @@
public override void WriteSetBegin(TSet set)
{
- WriteByte((byte)set.ElementType);
+ WriteByte((sbyte)set.ElementType);
WriteI32(set.Count);
}
@@ -157,13 +157,13 @@
public override void WriteBool(bool b)
{
- WriteByte(b ? (byte)1 : (byte)0);
+ WriteByte(b ? (sbyte)1 : (sbyte)0);
}
private byte[] bout = new byte[1];
- public override void WriteByte(byte b)
+ public override void WriteByte(sbyte b)
{
- bout[0] = b;
+ bout[0] = (byte)b;
trans.Write(bout, 0, 1);
}
@@ -323,10 +323,10 @@
}
private byte[] bin = new byte[1];
- public override byte ReadByte()
+ public override sbyte ReadByte()
{
ReadAll(bin, 0, 1);
- return bin[0];
+ return (sbyte)bin[0];
}
private byte[] i16in = new byte[2];