From: Mark Dickinson Date: Sat, 5 Jun 2010 12:14:43 +0000 (+0000) Subject: Issue #8627: Fix "XXX undetected error" from unchecked PyErr_WarnPy3k return. X-Git-Tag: v2.7rc1~19 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=e4b83e013ba8c2bda78163da38783f79b1a86079;p=python Issue #8627: Fix "XXX undetected error" from unchecked PyErr_WarnPy3k return. This is just a quick fix: if the warning is turned into an exception, the exception simply gets ignored. --- diff --git a/Misc/NEWS b/Misc/NEWS index 3378c5d44d..8608d03b17 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -13,7 +13,10 @@ Core and Builtins ----------------- - Issue #8627: Remove bogus "Overriding __cmp__ blocks inheritance of - __hash__ in 3.x" warning. + __hash__ in 3.x" warning. Also fix "XXX undetected error" that + arises from the "Overriding __eq__ blocks inheritance ..." warning + when turned into an exception: in this case the exception simply + gets ignored. - Issue #8748: Fix two issues with comparisons between complex and integer objects. (1) The comparison could incorrectly return True in some cases diff --git a/Objects/typeobject.c b/Objects/typeobject.c index 5767b87dfe..b28ab4d6da 100644 --- a/Objects/typeobject.c +++ b/Objects/typeobject.c @@ -3869,10 +3869,16 @@ inherit_slots(PyTypeObject *type, PyTypeObject *base) (base->tp_hash != PyObject_HashNotImplemented) && !OVERRIDES_HASH(type)) { if (OVERRIDES_EQ(type)) { - PyErr_WarnPy3k("Overriding " - "__eq__ blocks inheritance " - "of __hash__ in 3.x", - 1); + if (PyErr_WarnPy3k("Overriding " + "__eq__ blocks inheritance " + "of __hash__ in 3.x", + 1) < 0) + /* XXX This isn't right. If the warning is turned + into an exception, we should be communicating + the error back to the caller, but figuring out + how to clean-up in that case is tricky. See + issue 8627 for more. */ + PyErr_Clear(); } } }