diff --git a/Lib/pickletools.py b/Lib/pickletools.py index 5c0367be0f4..dec533d4928 100644 --- a/Lib/pickletools.py +++ b/Lib/pickletools.py @@ -590,14 +590,17 @@ def decode_long(data): -256L >>> decode_long("\x00\x80") -32768L - >>> + >>> decode_long("\x80") + -128L + >>> decode_long("\x7f") + 127L """ x = 0L i = 0L for c in data: x |= long(ord(c)) << i i += 8L - if i and (x & (1L << (i-1L))): + if data and ord(c) >= 0x80: x -= 1L << i return x