Fix closes issue12471 - wrong TypeError message when '%i' format spec was used.

This commit is contained in:
Senthil Kumaran 2011-07-03 21:03:16 -07:00
parent a55007a620
commit 9ebe08d2f6
2 changed files with 2 additions and 3 deletions

View File

@ -788,6 +788,7 @@ class UnicodeTest(string_tests.CommonTest,
self.assertEqual('%c' % '\U00021483', '\U00021483')
self.assertRaises(TypeError, "%c".__mod__, "aa")
self.assertRaises(ValueError, "%.1\u1032f".__mod__, (1.0/3))
self.assertRaises(TypeError, "%i".__mod__, "aa")
# formatting jobs delegated from the string implementation:
self.assertEqual('...%(foo)s...' % {'foo':"abc"}, '...abc...')

View File

@ -9689,8 +9689,6 @@ PyObject *PyUnicode_Format(PyObject *format,
case 'o':
case 'x':
case 'X':
if (c == 'i')
c = 'd';
isnumok = 0;
if (PyNumber_Check(v)) {
PyObject *iobj=NULL;
@ -9705,7 +9703,7 @@ PyObject *PyUnicode_Format(PyObject *format,
if (iobj!=NULL) {
if (PyLong_Check(iobj)) {
isnumok = 1;
temp = formatlong(iobj, flags, prec, c);
temp = formatlong(iobj, flags, prec, (c == 'i'? 'd': c));
Py_DECREF(iobj);
if (!temp)
goto onError;