summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Lib/test/test_weakref.py6
-rw-r--r--Objects/weakrefobject.c6
2 files changed, 7 insertions, 5 deletions
diff --git a/Lib/test/test_weakref.py b/Lib/test/test_weakref.py
index 75869a758a..2754cec5a2 100644
--- a/Lib/test/test_weakref.py
+++ b/Lib/test/test_weakref.py
@@ -271,6 +271,12 @@ class ReferencesTestCase(TestBase):
del f[0]
self.assertEqual(f.result, 0)
+ def test_proxy_bool(self):
+ # Test clearing of SF bug #1170766
+ class List(list): pass
+ lyst = List()
+ self.assertEqual(bool(weakref.proxy(lyst)), bool(lyst))
+
def test_getweakrefcount(self):
o = C()
ref1 = weakref.ref(o)
diff --git a/Objects/weakrefobject.c b/Objects/weakrefobject.c
index 02370c4a7a..5412dd3172 100644
--- a/Objects/weakrefobject.c
+++ b/Objects/weakrefobject.c
@@ -505,11 +505,7 @@ proxy_nonzero(PyWeakReference *proxy)
PyObject *o = PyWeakref_GET_OBJECT(proxy);
if (!proxy_checkref(proxy))
return -1;
- if (o->ob_type->tp_as_number &&
- o->ob_type->tp_as_number->nb_nonzero)
- return (*o->ob_type->tp_as_number->nb_nonzero)(o);
- else
- return 1;
+ return PyObject_IsTrue(o);
}
static void