summaryrefslogtreecommitdiffstats
path: root/Objects/stringobject.c
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>1999-06-07 15:12:32 (GMT)
committerGuido van Rossum <guido@python.org>1999-06-07 15:12:32 (GMT)
commit98c9eba945dd75d63e97dc66fb70b8dc53b8d9a7 (patch)
tree494cfbb6af6582a643eebf650b7d6d8d1899553a /Objects/stringobject.c
parent729afc1dff00440e5889c6e884d3908343a5c0cf (diff)
downloadcpython-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/stringobject.c')
-rw-r--r--Objects/stringobject.c6
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++;
}