diff options
author | Mark Dickinson <dickinsm@gmail.com> | 2010-06-05 12:15:35 (GMT) |
---|---|---|
committer | Mark Dickinson <dickinsm@gmail.com> | 2010-06-05 12:15:35 (GMT) |
commit | b671c2933689c86a1428917d0e090d1253350f52 (patch) | |
tree | e57a960d566daa9309eaa9dca90d292fb9285dae | |
parent | 80068da395457a496af5db713c586a09f75836f9 (diff) | |
download | cpython-b671c2933689c86a1428917d0e090d1253350f52.zip cpython-b671c2933689c86a1428917d0e090d1253350f52.tar.gz cpython-b671c2933689c86a1428917d0e090d1253350f52.tar.bz2 |
Merged revisions 81740 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r81740 | mark.dickinson | 2010-06-05 13:14:43 +0100 (Sat, 05 Jun 2010) | 5 lines
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.
........
-rw-r--r-- | Misc/NEWS | 5 | ||||
-rw-r--r-- | Objects/typeobject.c | 14 |
2 files changed, 14 insertions, 5 deletions
@@ -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 #3798: Write sys.exit() message to sys.stderr to use stderr encoding and error handler, instead of writing to the C stderr file in utf-8 diff --git a/Objects/typeobject.c b/Objects/typeobject.c index af2dc0b..f496804 100644 --- a/Objects/typeobject.c +++ b/Objects/typeobject.c @@ -3853,10 +3853,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(); } } } |