summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>2019-07-25 16:18:20 (GMT)
committerGitHub <noreply@github.com>2019-07-25 16:18:20 (GMT)
commit25cb4fd4fb0f44d2b6bf38379634f3d22b77aa17 (patch)
treee080f611ba9e8a7e211af2032956004a61bc3f07
parent69802f6163c9f18ca0e0b9c4c43a49365fc63e2d (diff)
downloadcpython-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.py5
-rw-r--r--Misc/NEWS.d/next/Library/2019-07-08-03-15-04.bpo-37502.qZGC4g.rst1
-rw-r--r--Modules/_pickle.c2
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 {