diff options
author | Tres Seaver <tseaver@palladion.com> | 2015-01-19 13:33:12 -0500 |
---|---|---|
committer | Tres Seaver <tseaver@palladion.com> | 2015-01-19 13:33:28 -0500 |
commit | f66e57bc834bfe5e7efb81421e3012cbf42cd229 (patch) | |
tree | fa443cdbf54f69f928803c62263325ce9f1c46b9 | |
parent | d63d1092c78aba572f90763bf642b3ea326ca329 (diff) | |
download | zope-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.c | 8 |
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; } |