mirror of https://github.com/python/cpython
Merge heads
This commit is contained in:
commit
dd52c5a1c4
|
@ -353,9 +353,10 @@ class RangeTest(unittest.TestCase):
|
||||||
(13, 21, 3), (-2, 2, 2), (2**65, 2**65+2)]
|
(13, 21, 3), (-2, 2, 2), (2**65, 2**65+2)]
|
||||||
for proto in range(pickle.HIGHEST_PROTOCOL + 1):
|
for proto in range(pickle.HIGHEST_PROTOCOL + 1):
|
||||||
for t in testcases:
|
for t in testcases:
|
||||||
r = range(*t)
|
with self.subTest(proto=proto, test=t):
|
||||||
self.assertEqual(list(pickle.loads(pickle.dumps(r, proto))),
|
r = range(*t)
|
||||||
list(r))
|
self.assertEqual(list(pickle.loads(pickle.dumps(r, proto))),
|
||||||
|
list(r))
|
||||||
|
|
||||||
def test_iterator_pickling(self):
|
def test_iterator_pickling(self):
|
||||||
testcases = [(13,), (0, 11), (-22, 10), (20, 3, -1),
|
testcases = [(13,), (0, 11), (-22, 10), (20, 3, -1),
|
||||||
|
|
|
@ -699,18 +699,28 @@ _Pickler_ClearBuffer(PicklerObject *self)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_write_size64(char *out, size_t value)
|
||||||
|
{
|
||||||
|
out[0] = (unsigned char)(value & 0xff);
|
||||||
|
out[1] = (unsigned char)((value >> 8) & 0xff);
|
||||||
|
out[2] = (unsigned char)((value >> 16) & 0xff);
|
||||||
|
out[3] = (unsigned char)((value >> 24) & 0xff);
|
||||||
|
#if SIZEOF_SIZE_T >= 8
|
||||||
|
out[4] = (unsigned char)((value >> 32) & 0xff);
|
||||||
|
out[5] = (unsigned char)((value >> 40) & 0xff);
|
||||||
|
out[6] = (unsigned char)((value >> 48) & 0xff);
|
||||||
|
out[7] = (unsigned char)((value >> 56) & 0xff);
|
||||||
|
#else
|
||||||
|
out[4] = out[5] = out[6] = out[7] = 0;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_Pickler_WriteFrameHeader(PicklerObject *self, char *qdata, size_t frame_len)
|
_Pickler_WriteFrameHeader(PicklerObject *self, char *qdata, size_t frame_len)
|
||||||
{
|
{
|
||||||
qdata[0] = (unsigned char)FRAME;
|
qdata[0] = FRAME;
|
||||||
qdata[1] = (unsigned char)(frame_len & 0xff);
|
_write_size64(qdata + 1, frame_len);
|
||||||
qdata[2] = (unsigned char)((frame_len >> 8) & 0xff);
|
|
||||||
qdata[3] = (unsigned char)((frame_len >> 16) & 0xff);
|
|
||||||
qdata[4] = (unsigned char)((frame_len >> 24) & 0xff);
|
|
||||||
qdata[5] = (unsigned char)((frame_len >> 32) & 0xff);
|
|
||||||
qdata[6] = (unsigned char)((frame_len >> 40) & 0xff);
|
|
||||||
qdata[7] = (unsigned char)((frame_len >> 48) & 0xff);
|
|
||||||
qdata[8] = (unsigned char)((frame_len >> 56) & 0xff);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
|
@ -2017,7 +2027,7 @@ save_bytes(PicklerObject *self, PyObject *obj)
|
||||||
int i;
|
int i;
|
||||||
header[0] = BINBYTES8;
|
header[0] = BINBYTES8;
|
||||||
for (i = 0; i < 8; i++) {
|
for (i = 0; i < 8; i++) {
|
||||||
header[i+1] = (unsigned char)((size >> (8 * i)) & 0xff);
|
_write_size64(header + 1, size);
|
||||||
}
|
}
|
||||||
len = 8;
|
len = 8;
|
||||||
}
|
}
|
||||||
|
@ -2131,7 +2141,7 @@ write_utf8(PicklerObject *self, char *data, Py_ssize_t size)
|
||||||
|
|
||||||
header[0] = BINUNICODE8;
|
header[0] = BINUNICODE8;
|
||||||
for (i = 0; i < 8; i++) {
|
for (i = 0; i < 8; i++) {
|
||||||
header[i+1] = (unsigned char)((size >> (8 * i)) & 0xff);
|
_write_size64(header + 1, size);
|
||||||
}
|
}
|
||||||
len = 9;
|
len = 9;
|
||||||
}
|
}
|
||||||
|
@ -2940,6 +2950,9 @@ save_frozenset(PicklerObject *self, PyObject *obj)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
iter = PyObject_GetIter(obj);
|
iter = PyObject_GetIter(obj);
|
||||||
|
if (iter == NULL) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
for (;;) {
|
for (;;) {
|
||||||
PyObject *item;
|
PyObject *item;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue