msvcrt: Fix *printf() handling of negative field width.

This commit is contained in:
Michael Stefaniuc 2007-01-29 23:53:46 +01:00 committed by Alexandre Julliard
parent fdff5c3a3a
commit bbe9c51b31
2 changed files with 11 additions and 1 deletions

View File

@ -279,6 +279,11 @@ static void test_sprintf( void )
ok(!strcmp(buffer,"f"),"Precision ignored \"%s\"\n",buffer);
ok( r==1, "return count wrong\n");
format = "%*s";
r = sprintf(buffer,format,-5,"foo");
ok(!strcmp(buffer,"foo "),"Negative field width ignored \"%s\"\n",buffer);
ok( r==5, "return count wrong\n");
format = "%#-012p";
r = sprintf(buffer,format,(void *)57);
ok(!strcmp(buffer,"0X00000039 "),"Pointer formatted incorrectly\n");

View File

@ -568,9 +568,14 @@ static int pf_vsnprintf( pf_output *out, const WCHAR *format, va_list valist )
/* deal with the field width specifier */
flags.FieldLength = 0;
if( *p == '*' )
if( *p == '*' )
{
flags.FieldLength = va_arg( valist, int );
if (flags.FieldLength < 0)
{
flags.LeftAlign = '-';
flags.FieldLength = -flags.FieldLength;
}
p++;
}
else while( isdigit(*p) )