diff options
author | Miss Islington (bot) <31488909+miss-islington@users.noreply.github.com> | 2019-07-25 16:18:20 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-07-25 16:18:20 (GMT) |
commit | 25cb4fd4fb0f44d2b6bf38379634f3d22b77aa17 (patch) | |
tree | e080f611ba9e8a7e211af2032956004a61bc3f07 | |
parent | 69802f6163c9f18ca0e0b9c4c43a49365fc63e2d (diff) | |
download | cpython-25cb4fd4fb0f44d2b6bf38379634f3d22b77aa17.zip cpython-25cb4fd4fb0f44d2b6bf38379634f3d22b77aa17.tar.gz cpython-25cb4fd4fb0f44d2b6bf38379634f3d22b77aa17.tar.bz2 |
bpo-37502: handle default parameter for buffers argument of pickle.loads correctly (GH-14593)
(cherry picked from commit 898318b53d921298d1f1fcfa0f415844afbeb318)
Co-authored-by: Markus Mohrhard <markus.mohrhard@googlemail.com>
-rw-r--r-- | Lib/test/pickletester.py | 5 | ||||
-rw-r--r-- | Misc/NEWS.d/next/Library/2019-07-08-03-15-04.bpo-37502.qZGC4g.rst | 1 | ||||
-rw-r--r-- | Modules/_pickle.c | 2 |
3 files changed, 7 insertions, 1 deletions
diff --git a/Lib/test/pickletester.py b/Lib/test/pickletester.py index f8f3bc9..2bc99e6 100644 --- a/Lib/test/pickletester.py +++ b/Lib/test/pickletester.py @@ -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): diff --git a/Misc/NEWS.d/next/Library/2019-07-08-03-15-04.bpo-37502.qZGC4g.rst b/Misc/NEWS.d/next/Library/2019-07-08-03-15-04.bpo-37502.qZGC4g.rst new file mode 100644 index 0000000..4eb6d09 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2019-07-08-03-15-04.bpo-37502.qZGC4g.rst @@ -0,0 +1 @@ +pickle.loads() no longer raises TypeError when the buffers argument is set to None diff --git a/Modules/_pickle.c b/Modules/_pickle.c index 0a59757..bbe2603 100644 --- a/Modules/_pickle.c +++ b/Modules/_pickle.c @@ -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 { |