diff --git a/Lib/test/test_weakref.py b/Lib/test/test_weakref.py index 75869a758a6..2754cec5a2c 100644 --- a/Lib/test/test_weakref.py +++ b/Lib/test/test_weakref.py @@ -271,6 +271,12 @@ def __delitem__(self, accessor): 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 02370c4a7ae..5412dd31726 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