empty = self.loads(b'\x80\x03U\x00q\x00.', encoding='koi8-r')
self.assertEqual(empty, '')
+ def test_int_pickling_efficiency(self):
+ # Test compacity of int representation (see issue #12744)
+ for proto in protocols:
+ sizes = [len(self.dumps(2**n, proto)) for n in range(70)]
+ # the size function is monotonous
+ self.assertEqual(sorted(sizes), sizes)
+ if proto >= 2:
+ self.assertLessEqual(sizes[-1], 14)
+
+
# Test classes for reduce_ex
class REX_one(object):
Library
-------
+- Issue #12744: Fix inefficient representation of integers between 2**31 and
+ 2**63 on systems with a 64-bit C "long".
+
- Issue #12646: Add an 'eof' attribute to zlib.Decompress, to make it easier to
detect truncated input streams.
/* out of range for int pickling */
PyErr_Clear();
}
- else
+ else if (val <= 0x7fffffffL && val >= -0x80000000L)
return save_int(self, val);
if (self->proto >= 2) {