Fix bug in varint packing that caused 0s to throw an exception
This commit is contained in:
@@ -37,6 +37,8 @@ def bitlength(n):
|
|||||||
|
|
||||||
def varint_pack(big):
|
def varint_pack(big):
|
||||||
pos = True
|
pos = True
|
||||||
|
if big == 0:
|
||||||
|
return '\x00'
|
||||||
if big < 0:
|
if big < 0:
|
||||||
bytelength = bitlength(abs(big) - 1) / 8 + 1
|
bytelength = bitlength(abs(big) - 1) / 8 + 1
|
||||||
big = (1 << bytelength * 8) + big
|
big = (1 << bytelength * 8) + big
|
||||||
|
|||||||
@@ -61,6 +61,7 @@ marshalled_value_pairs = (
|
|||||||
# vagaries of internal python ordering for unordered types
|
# vagaries of internal python ordering for unordered types
|
||||||
('\x00\x03\x00\x06\xe3\x81\xbfbob\x00\x04\x00\x00\x00\xc7\x00\x00\x00\x04\xff\xff\xff\xff\x00\x01\\\x00\x04\x00\x00\x00\x00', 'MapType(UTF8Type, Int32Type)', {u'\u307fbob': 199, u'': -1, u'\\': 0}),
|
('\x00\x03\x00\x06\xe3\x81\xbfbob\x00\x04\x00\x00\x00\xc7\x00\x00\x00\x04\xff\xff\xff\xff\x00\x01\\\x00\x04\x00\x00\x00\x00', 'MapType(UTF8Type, Int32Type)', {u'\u307fbob': 199, u'': -1, u'\\': 0}),
|
||||||
('\x00\x02\x00\x08@\x14\x00\x00\x00\x00\x00\x00\x00\x08@\x01\x99\x99\x99\x99\x99\x9a', 'SetType(DoubleType)', set([2.2, 5.0])),
|
('\x00\x02\x00\x08@\x14\x00\x00\x00\x00\x00\x00\x00\x08@\x01\x99\x99\x99\x99\x99\x9a', 'SetType(DoubleType)', set([2.2, 5.0])),
|
||||||
|
('\x00', 'IntegerType', 0),
|
||||||
)
|
)
|
||||||
|
|
||||||
class TestUnmarshal(unittest.TestCase):
|
class TestUnmarshal(unittest.TestCase):
|
||||||
|
|||||||
Reference in New Issue
Block a user