summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNeal Norwitz <nnorwitz@gmail.com>2004-07-08 01:22:31 (GMT)
committerNeal Norwitz <nnorwitz@gmail.com>2004-07-08 01:22:31 (GMT)
commitbdcb9410c20c49928c91b065ccbd115aa450e037 (patch)
tree2d3922fdf383427b27030446e5dbc9216fc3554b
parentbd7f76dd04780304c397323ae994092ce759d5a2 (diff)
downloadcpython-bdcb9410c20c49928c91b065ccbd115aa450e037.zip
cpython-bdcb9410c20c49928c91b065ccbd115aa450e037.tar.gz
cpython-bdcb9410c20c49928c91b065ccbd115aa450e037.tar.bz2
SF bug #978308, Spurious errors taking bool of dead pro
Need to return -1 on error. Needs backport.
-rw-r--r--Lib/test/test_weakref.py1
-rw-r--r--Objects/weakrefobject.c2
2 files changed, 2 insertions, 1 deletions
diff --git a/Lib/test/test_weakref.py b/Lib/test/test_weakref.py
index 31e2c7f..75869a7 100644
--- a/Lib/test/test_weakref.py
+++ b/Lib/test/test_weakref.py
@@ -104,6 +104,7 @@ class ReferencesTestCase(TestBase):
self.assertRaises(weakref.ReferenceError, check, ref1)
self.assertRaises(weakref.ReferenceError, check, ref2)
+ self.assertRaises(weakref.ReferenceError, bool, weakref.proxy(C()))
self.assert_(self.cbcalled == 2)
def check_basic_ref(self, factory):
diff --git a/Objects/weakrefobject.c b/Objects/weakrefobject.c
index 572c224..54fe446 100644
--- a/Objects/weakrefobject.c
+++ b/Objects/weakrefobject.c
@@ -504,7 +504,7 @@ proxy_nonzero(PyWeakReference *proxy)
{
PyObject *o = PyWeakref_GET_OBJECT(proxy);
if (!proxy_checkref(proxy))
- return 1;
+ 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);