diff options
author | Raymond Hettinger <python@rcn.com> | 2005-03-27 03:04:54 (GMT) |
---|---|---|
committer | Raymond Hettinger <python@rcn.com> | 2005-03-27 03:04:54 (GMT) |
commit | e6c470f255b958d65db75e2b9c2416585638b6cf (patch) | |
tree | 0b5737e46e6a0b5451666b4b1505f78fed9cbec4 | |
parent | ca5d8fea3d1db3ecb914d6c266318e394ee1cb6b (diff) | |
download | cpython-e6c470f255b958d65db75e2b9c2416585638b6cf.zip cpython-e6c470f255b958d65db75e2b9c2416585638b6cf.tar.gz cpython-e6c470f255b958d65db75e2b9c2416585638b6cf.tar.bz2 |
SF bug #1770766: weakref proxy has incorrect __nonzero__ behavior.
-rw-r--r-- | Lib/test/test_weakref.py | 6 | ||||
-rw-r--r-- | Objects/weakrefobject.c | 6 |
2 files changed, 7 insertions, 5 deletions
diff --git a/Lib/test/test_weakref.py b/Lib/test/test_weakref.py index 75869a7..2754cec 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 02370c4..5412dd3 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 |