bpo-37502: handle default parameter for buffers argument of pickle.loads correctly (GH-14593)

This commit is contained in:
Markus Mohrhard 2019-07-26 00:00:34 +08:00 committed by Antoine Pitrou
parent 93e8aa62cf
commit 898318b53d
3 changed files with 7 additions and 1 deletions

View File

@ -2765,6 +2765,11 @@ class AbstractPickleTests(unittest.TestCase):
with self.assertRaises(pickle.UnpicklingError):
self.loads(data, buffers=[])
def test_inband_accept_default_buffers_argument(self):
for proto in range(5, pickle.HIGHEST_PROTOCOL + 1):
data_pickled = self.dumps(1, proto, buffer_callback=None)
data = self.loads(data_pickled, buffers=None)
@unittest.skipIf(np is None, "Test needs Numpy")
def test_buffers_numpy(self):
def check_no_copy(x, y):

View File

@ -0,0 +1 @@
pickle.loads() no longer raises TypeError when the buffers argument is set to None

View File

@ -1653,7 +1653,7 @@ _Unpickler_SetInputEncoding(UnpicklerObject *self,
static int
_Unpickler_SetBuffers(UnpicklerObject *self, PyObject *buffers)
{
if (buffers == NULL) {
if (buffers == NULL || buffers == Py_None) {
self->buffers = NULL;
}
else {