diff options
-rw-r--r-- | CHANGES.rst | 3 | ||||
-rw-r--r-- | src/zope/security/_proxy.c | 1 | ||||
-rw-r--r-- | src/zope/security/_zope_security_checker.c | 1 |
3 files changed, 5 insertions, 0 deletions
diff --git a/CHANGES.rst b/CHANGES.rst index 450fc34..1ebd486 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -4,6 +4,9 @@ Changes 4.1.2 (unreleased) ------------------ +- Fix the extremely rare potential for a crash when the C extensions + are in use. See `issue 35 <https://github.com/zopefoundation/zope.security/issues/35>`_. + - Fix `issue 7 <https://github.com/zopefoundation/zope.security/issues/7`_: The pure-Python proxy didn't propagate ``TypeError`` from ``__repr__`` diff --git a/src/zope/security/_proxy.c b/src/zope/security/_proxy.c index 5108065..04321d7 100644 --- a/src/zope/security/_proxy.c +++ b/src/zope/security/_proxy.c @@ -343,6 +343,7 @@ proxy_clear(SecurityProxy *self) static void proxy_dealloc(SecurityProxy *self) { + PyObject_GC_UnTrack((PyObject*)self); proxy_clear(self); SecurityProxyType.tp_base->tp_dealloc((PyObject*)self); } diff --git a/src/zope/security/_zope_security_checker.c b/src/zope/security/_zope_security_checker.c index e5a2528..82edbbf 100644 --- a/src/zope/security/_zope_security_checker.c +++ b/src/zope/security/_zope_security_checker.c @@ -368,6 +368,7 @@ Checker_clear(Checker *self) static void Checker_dealloc(Checker *self) { + PyObject_GC_UnTrack((PyObject*)self); Checker_clear(self); Py_TYPE(self)->tp_free((PyObject*)self); } |