From 885e1939beb3ab95cc4e06d86815261256cd1d03 Mon Sep 17 00:00:00 2001 From: Barry Warsaw Date: Mon, 11 Jan 2016 13:24:02 -0500 Subject: Issue #22995: [UPDATE] Comment out the one of the pickleability tests in _PyObject_GetState() due to regressions observed in Cython-based projects. --- Misc/NEWS | 3 +++ Objects/typeobject.c | 9 +++++++++ 2 files changed, 12 insertions(+) diff --git a/Misc/NEWS b/Misc/NEWS index 72db759..7bdce71 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -10,6 +10,9 @@ Release date: tba Core and Builtins ----------------- +- Issue #22995: [UPDATE] Comment out the one of the pickleability tests in + _PyObject_GetState() due to regressions observed in Cython-based projects. + - Issue #25961: Disallowed null characters in the type name. - Issue #25973: Fix segfault when an invalid nonlocal statement binds a name diff --git a/Objects/typeobject.c b/Objects/typeobject.c index 2e68043..ff4ae11 100644 --- a/Objects/typeobject.c +++ b/Objects/typeobject.c @@ -3866,6 +3866,14 @@ _PyObject_GetState(PyObject *obj, int required) } assert(slotnames == Py_None || PyList_Check(slotnames)); +#if 0 + /* 2016-01-11 barry - This clause breaks at least three packages which + rely on Cython: kivy, pysam, and s3ql. Cython may be doing + something funny under the hood, but as this is clearly a regression + and the rationale for this prohibition is suspect, I am commenting + this out. Perhaps it should just be removed. See issue #22995 for + details. + */ if (required) { Py_ssize_t basicsize = PyBaseObject_Type.tp_basicsize; if (obj->ob_type->tp_dictoffset) @@ -3883,6 +3891,7 @@ _PyObject_GetState(PyObject *obj, int required) return NULL; } } +#endif if (slotnames != Py_None && Py_SIZE(slotnames) > 0) { PyObject *slots; -- cgit v0.12