diff options
author | Guido van Rossum <guido@python.org> | 1999-06-07 15:12:32 (GMT) |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 1999-06-07 15:12:32 (GMT) |
commit | 98c9eba945dd75d63e97dc66fb70b8dc53b8d9a7 (patch) | |
tree | 494cfbb6af6582a643eebf650b7d6d8d1899553a /Objects | |
parent | 729afc1dff00440e5889c6e884d3908343a5c0cf (diff) | |
download | cpython-98c9eba945dd75d63e97dc66fb70b8dc53b8d9a7.zip cpython-98c9eba945dd75d63e97dc66fb70b8dc53b8d9a7.tar.gz cpython-98c9eba945dd75d63e97dc66fb70b8dc53b8d9a7.tar.bz2 |
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.
Diffstat (limited to 'Objects')
-rw-r--r-- | Objects/stringobject.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/Objects/stringobject.c b/Objects/stringobject.c index 1f1a41b..eecb006 100644 --- a/Objects/stringobject.c +++ b/Objects/stringobject.c @@ -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++; } |