summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTres Seaver <tseaver@palladion.com>2015-01-19 13:33:12 -0500
committerTres Seaver <tseaver@palladion.com>2015-01-19 13:33:28 -0500
commitf66e57bc834bfe5e7efb81421e3012cbf42cd229 (patch)
treefa443cdbf54f69f928803c62263325ce9f1c46b9
parentd63d1092c78aba572f90763bf642b3ea326ca329 (diff)
downloadzope-proxy-2-avoid_use_of_cl_dict.tar.gz
Attempt to port @therve's patch to current trunk.2-avoid_use_of_cl_dict
Unfortunately, it breaks 'tox -e docs'. See #2.
-rw-r--r--src/zope/proxy/_zope_proxy_proxy.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/zope/proxy/_zope_proxy_proxy.c b/src/zope/proxy/_zope_proxy_proxy.c
index 9166976..3ec2574 100644
--- a/src/zope/proxy/_zope_proxy_proxy.c
+++ b/src/zope/proxy/_zope_proxy_proxy.c
@@ -215,17 +215,21 @@ WrapperType_Lookup(PyTypeObject *type, PyObject *name)
if (((PyTypeObject *)base) != &ProxyType) {
#if PY_MAJOR_VERSION < 3
- if (PyClass_Check(base))
- dict = ((PyClassObject *)base)->cl_dict;
+ if (PyClass_Check(base)) {
+ //dict = ((PyClassObject *)base)->cl_dict;
+ dict = GetAttrString(base, "__dict__");
+ }
else
#endif
{
assert(PyType_Check(base));
dict = ((PyTypeObject *)base)->tp_dict;
+ Py_INCREF(dict);
}
assert(dict && PyDict_Check(dict));
res = PyDict_GetItem(dict, name);
+ Py_DECREF(dict);
if (res != NULL)
return res;
}