summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Madden <jason+github@nextthought.com>2017-09-11 09:25:38 -0500
committerGitHub <noreply@github.com>2017-09-11 09:25:38 -0500
commitb339f682bf801ca4d041282e8f9a2662a68a0236 (patch)
tree2e4e73257c8fe7378dd72841ad1c6e5e1b53265d
parent009f4299cfdb22d871cad3c8fcedd97f4b5680ad (diff)
parenta11c5e20c2e25a5f7f32f1c11e4d4f47322ff3bb (diff)
downloadzope-security-b339f682bf801ca4d041282e8f9a2662a68a0236.tar.gz
Merge pull request #37 from zopefoundation/issue35
call PyObject_GC_UnTrack() in tp_dealloc()
-rw-r--r--CHANGES.rst3
-rw-r--r--src/zope/security/_proxy.c1
-rw-r--r--src/zope/security/_zope_security_checker.c1
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);
}