summaryrefslogtreecommitdiffstats
path: root/Objects/unicodeobject.c
diff options
context:
space:
mode:
authorVictor Stinner <victor.stinner@haypocalc.com>2011-03-02 00:04:25 (GMT)
committerVictor Stinner <victor.stinner@haypocalc.com>2011-03-02 00:04:25 (GMT)
commit6d970f47134ef812774defe3169c95ee6c4c6bff (patch)
treeaa1dbd10f28c178d7eb6844066c3cb0cfcc9f453 /Objects/unicodeobject.c
parente7faec1aa986f9214a72b2a5533dbab5864fd447 (diff)
downloadcpython-6d970f47134ef812774defe3169c95ee6c4c6bff.zip
cpython-6d970f47134ef812774defe3169c95ee6c4c6bff.tar.gz
cpython-6d970f47134ef812774defe3169c95ee6c4c6bff.tar.bz2
Issue #10831: PyUnicode_FromFormat() supports %li, %lli and %zi formats
Diffstat (limited to 'Objects/unicodeobject.c')
-rw-r--r--Objects/unicodeobject.c14
1 files changed, 5 insertions, 9 deletions
diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c
index 7597a46..cd0fccf 100644
--- a/Objects/unicodeobject.c
+++ b/Objects/unicodeobject.c
@@ -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));