mirror of
https://github.com/python/cpython.git
synced 2025-07-16 07:45:20 +00:00
Issue #10831: PyUnicode_FromFormat() supports %li, %lli and %zi formats
This commit is contained in:
parent
e7faec1aa9
commit
6d970f4713
3 changed files with 33 additions and 18 deletions
|
@ -753,20 +753,20 @@ parse_format_flags(const char *f,
|
|||
size_tflag = 0;
|
||||
|
||||
if (*f == 'l') {
|
||||
if (f[1] == 'd' || f[1] == 'u') {
|
||||
if (f[1] == 'd' || f[1] == 'u' || f[1] == 'i') {
|
||||
longflag = 1;
|
||||
++f;
|
||||
}
|
||||
#ifdef HAVE_LONG_LONG
|
||||
else if (f[1] == 'l' &&
|
||||
(f[2] == 'd' || f[2] == 'u')) {
|
||||
(f[2] == 'd' || f[2] == 'u' || f[2] == 'i')) {
|
||||
longlongflag = 1;
|
||||
f += 2;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
/* handle the size_t flag. */
|
||||
else if (*f == 'z' && (f[1] == 'd' || f[1] == 'u')) {
|
||||
else if (*f == 'z' && (f[1] == 'd' || f[1] == 'u' || f[1] == 'i')) {
|
||||
size_tflag = 1;
|
||||
++f;
|
||||
}
|
||||
|
@ -1044,9 +1044,10 @@ PyUnicode_FromFormatV(const char *format, va_list vargs)
|
|||
*s++ = ordinal;
|
||||
break;
|
||||
}
|
||||
case 'i':
|
||||
case 'd':
|
||||
makefmt(fmt, longflag, longlongflag, size_tflag, zeropad,
|
||||
width, precision, 'd');
|
||||
width, precision, *f);
|
||||
if (longflag)
|
||||
sprintf(realbuffer, fmt, va_arg(vargs, long));
|
||||
#ifdef HAVE_LONG_LONG
|
||||
|
@ -1075,11 +1076,6 @@ PyUnicode_FromFormatV(const char *format, va_list vargs)
|
|||
sprintf(realbuffer, fmt, va_arg(vargs, unsigned int));
|
||||
appendstring(realbuffer);
|
||||
break;
|
||||
case 'i':
|
||||
makefmt(fmt, 0, 0, 0, zeropad, width, precision, 'i');
|
||||
sprintf(realbuffer, fmt, va_arg(vargs, int));
|
||||
appendstring(realbuffer);
|
||||
break;
|
||||
case 'x':
|
||||
makefmt(fmt, 0, 0, 0, zeropad, width, precision, 'x');
|
||||
sprintf(realbuffer, fmt, va_arg(vargs, int));
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue