SF bug #978308, Spurious errors taking bool of dead pro
Need to return -1 on error.
Needs backport.
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 @@
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 @@
{
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);