[Python-checkins] r81741 - in python/branches/release26-maint: Misc/NEWS Objects/typeobject.c

mark.dickinson python-checkins at python.org
Sat Jun 5 14:15:36 CEST 2010


Author: mark.dickinson
Date: Sat Jun  5 14:15:35 2010
New Revision: 81741

Log:
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.
........


Modified:
   python/branches/release26-maint/   (props changed)
   python/branches/release26-maint/Misc/NEWS
   python/branches/release26-maint/Objects/typeobject.c

Modified: python/branches/release26-maint/Misc/NEWS
==============================================================================
--- python/branches/release26-maint/Misc/NEWS	(original)
+++ python/branches/release26-maint/Misc/NEWS	Sat Jun  5 14:15:35 2010
@@ -13,7 +13,10 @@
 -----------------
 
 - 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

Modified: python/branches/release26-maint/Objects/typeobject.c
==============================================================================
--- python/branches/release26-maint/Objects/typeobject.c	(original)
+++ python/branches/release26-maint/Objects/typeobject.c	Sat Jun  5 14:15:35 2010
@@ -3853,10 +3853,16 @@
                                 (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();
                     }
                 }
             }


More information about the Python-checkins mailing list