From: Serhiy Storchaka Date: Sun, 10 Apr 2016 12:26:52 +0000 (+0300) Subject: Issue #13410: Fixed a bug in PyUnicode_Format where it failed to properly X-Git-Tag: v2.7.12rc1~136 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=149d080871f9bef276a3d4fa251ba6fbc910f770;p=thirdparty%2FPython%2Fcpython.git Issue #13410: Fixed a bug in PyUnicode_Format where it failed to properly ignore errors from a __int__() method. Patch based on the patch for issue #15516. --- diff --git a/Lib/test/test_format.py b/Lib/test/test_format.py index ba3399ea251d..633601c1bf15 100644 --- a/Lib/test/test_format.py +++ b/Lib/test/test_format.py @@ -243,6 +243,7 @@ class FormatTest(unittest.TestCase): fst = IntFails() testformat("%x", fst, '0') + testformat(u"%x", fst, '0') # Test exception for unknown format characters if verbose: diff --git a/Misc/NEWS b/Misc/NEWS index 7219c5e8094a..ed6e8bc44954 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -10,6 +10,9 @@ What's New in Python 2.7.12? Core and Builtins ----------------- +- Issue #13410: Fixed a bug in PyUnicode_Format where it failed to properly + ignore errors from a __int__() method. + - Issue #26494: Fixed crash on iterating exhausting iterators. Affected classes are generic sequence iterators, iterators of bytearray, list, tuple, set, frozenset, dict, OrderedDict and corresponding views. diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c index 454451eb671c..d06ce2cb9702 100644 --- a/Objects/unicodeobject.c +++ b/Objects/unicodeobject.c @@ -8632,7 +8632,10 @@ PyObject *PyUnicode_Format(PyObject *format, } else { iobj = PyNumber_Int(v); - if (iobj==NULL) iobj = PyNumber_Long(v); + if (iobj==NULL) { + PyErr_Clear(); + iobj = PyNumber_Long(v); + } } if (iobj!=NULL) { if (PyInt_Check(iobj)) {