strfmon: Fix formatting of a second fixed-width value

There is a bug when formatting two consecutive values using fixed-widths
and the values need padding.  This was because the value of pad_size
was zeroed only every other time.

Format           Before                         After
[%8n] [%8n]      [ $123.45] [       $123.45]    [ $123.45] [ $123.45]

Reviewed by:	kib
PR:	267282
Github PR:	#619
MFC after:	1 week
This commit is contained in:
Jose Luis Duran 2022-10-21 16:34:09 -03:00 committed by Konstantin Belousov
parent 750fe3e6a4
commit 34f88528ed
2 changed files with 2 additions and 2 deletions

View File

@ -135,7 +135,6 @@ vstrfmon_l(char * __restrict s, size_t maxsize, locale_t loc,
fmt = format;
asciivalue = NULL;
currency_symbol = NULL;
pad_size = 0;
while (*fmt) {
/* pass nonformating characters AS IS */
@ -155,6 +154,7 @@ vstrfmon_l(char * __restrict s, size_t maxsize, locale_t loc,
/* set up initial values */
flags = (NEED_GROUPING|LOCALE_POSN);
pad_char = ' '; /* padding character is "space" */
pad_size = 0; /* no padding initially */
left_prec = -1; /* no left precision specified */
right_prec = -1; /* no right precision specified */
width = -1; /* no width specified */

View File

@ -74,7 +74,7 @@ ATF_TC_BODY(strfmon_examples, tc)
const char *expected;
} tests[] = {
{ "%n", "[$123.45] [-$123.45] [$3,456.78]" },
{ "%11n", "[ $123.45] [ -$123.45] [ $3,456.78]" }, /* XXX */
{ "%11n", "[ $123.45] [ -$123.45] [ $3,456.78]" },
{ "%#5n", "[ $ 123.45] [-$ 123.45] [ $ 3,456.78]" },
{ "%=*#5n", "[ $***123.45] [-$***123.45] [ $*3,456.78]" },
{ "%=0#5n", "[ $000123.45] [-$000123.45] [ $03,456.78]" },