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.
This commit is contained in:
Mark Dickinson 2010-06-05 12:14:43 +00:00
parent e37d75fce2
commit e4b83e013b
2 changed files with 14 additions and 5 deletions

View file

@ -13,7 +13,10 @@ Core and Builtins
----------------- -----------------
- Issue #8627: Remove bogus "Overriding __cmp__ blocks inheritance of - 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 - Issue #8748: Fix two issues with comparisons between complex and integer
objects. (1) The comparison could incorrectly return True in some cases objects. (1) The comparison could incorrectly return True in some cases

View file

@ -3869,10 +3869,16 @@ inherit_slots(PyTypeObject *type, PyTypeObject *base)
(base->tp_hash != PyObject_HashNotImplemented) && (base->tp_hash != PyObject_HashNotImplemented) &&
!OVERRIDES_HASH(type)) { !OVERRIDES_HASH(type)) {
if (OVERRIDES_EQ(type)) { if (OVERRIDES_EQ(type)) {
PyErr_WarnPy3k("Overriding " if (PyErr_WarnPy3k("Overriding "
"__eq__ blocks inheritance " "__eq__ blocks inheritance "
"of __hash__ in 3.x", "of __hash__ in 3.x",
1); 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();
} }
} }
} }