mirror of
https://github.com/python/cpython.git
synced 2025-08-04 08:59:19 +00:00
Fix for bug #417030: "print '%*s' fails for unicode string"
This commit is contained in:
parent
0e57abf0cd
commit
542fe56cb9
2 changed files with 9 additions and 2 deletions
|
@ -366,6 +366,12 @@ verify('...%(foo)s...' % {u'foo':u"abc",u'def':123} == u'...abc...')
|
|||
verify('...%s...%s...%s...%s...' % (1,2,3,u"abc") == u'...1...2...3...abc...')
|
||||
verify('...%%...%%s...%s...%s...%s...%s...' % (1,2,3,u"abc") == u'...%...%s...1...2...3...abc...')
|
||||
verify('...%s...' % u"abc" == u'...abc...')
|
||||
verify('%*s' % (5,u'abc',) == u' abc')
|
||||
verify('%*s' % (-5,u'abc',) == u'abc ')
|
||||
verify('%*.*s' % (5,2,u'abc',) == u' ab')
|
||||
verify('%*.*s' % (5,3,u'abc',) == u' abc')
|
||||
verify('%i %*.*s' % (10, 5,3,u'abc',) == u'10 abc')
|
||||
verify('%i%s %*.*s' % (10, 3, 5,3,u'abc',) == u'103 abc')
|
||||
print 'done.'
|
||||
|
||||
# Test builtin codecs
|
||||
|
|
|
@ -2781,6 +2781,7 @@ PyString_Format(PyObject *format, PyObject *args)
|
|||
int len;
|
||||
char formatbuf[FORMATBUFLEN]; /* For format{float,int,char}() */
|
||||
char *fmt_start = fmt;
|
||||
int argidx_start = argidx;
|
||||
|
||||
fmt++;
|
||||
if (*fmt == '(') {
|
||||
|
@ -2934,6 +2935,7 @@ PyString_Format(PyObject *format, PyObject *args)
|
|||
case 'r':
|
||||
if (PyUnicode_Check(v)) {
|
||||
fmt = fmt_start;
|
||||
argidx = argidx_start;
|
||||
goto unicode;
|
||||
}
|
||||
if (c == 's')
|
||||
|
@ -3098,8 +3100,7 @@ PyString_Format(PyObject *format, PyObject *args)
|
|||
Py_DECREF(args);
|
||||
args_owned = 0;
|
||||
}
|
||||
/* Fiddle args right (remove the first argidx-1 arguments) */
|
||||
--argidx;
|
||||
/* Fiddle args right (remove the first argidx arguments) */
|
||||
if (PyTuple_Check(orig_args) && argidx > 0) {
|
||||
PyObject *v;
|
||||
int n = PyTuple_GET_SIZE(orig_args) - argidx;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue