mirror of
https://github.com/python/cpython.git
synced 2025-08-31 14:07:50 +00:00
Fix bug discovered by John W. Shipman -- when the width of a format
specifier came from an int expression instead of a constant in the format, a negative width was truncated to zero instead of taken to mean the same as that negative constant plugged into the format. E.g. "(%*s)" % (-5, "foo") yielded "(foo)" while "(%-5s)" yields "(foo )". Now both yield the latter -- like sprintf() in C.
This commit is contained in:
parent
729afc1dff
commit
98c9eba945
1 changed files with 4 additions and 2 deletions
|
@ -832,8 +832,10 @@ PyString_Format(format, args)
|
|||
goto error;
|
||||
}
|
||||
width = PyInt_AsLong(v);
|
||||
if (width < 0)
|
||||
width = 0;
|
||||
if (width < 0) {
|
||||
flags |= F_LJUST;
|
||||
width = -width;
|
||||
}
|
||||
if (--fmtcnt >= 0)
|
||||
c = *fmt++;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue