lib/thrift_client/simple.rb in thrift_client-0.4.2 vs lib/thrift_client/simple.rb in thrift_client-0.4.3

- old
+ new

@@ -98,11 +98,12 @@ when STRING len = s.read(4).unpack("N").first s.read(len) when I64 hi, lo = s.read(8).unpack("NN") - (hi << 32) | lo + rv = (hi << 32) | lo + (rv >= (1 << 63)) ? (rv - (1 << 64)) : rv when LIST read_list(s) when MAP read_map(s) when STRUCT @@ -112,10 +113,18 @@ when MapType read_map(s, type.key_type, type.value_type) when StructType read_struct(s, type.struct_class) else - s.read(SIZES[type]).unpack(FORMATS[type]).first + rv = s.read(SIZES[type]).unpack(FORMATS[type]).first + case type + when I16 + (rv >= (1 << 15)) ? (rv - (1 << 16)) : rv + when I32 + (rv >= (1 << 31)) ? (rv - (1 << 32)) : rv + else + rv + end end end def read_list(s, element_type=nil) etype, len = s.read(5).unpack("cN")