Module: wine Branch: master Commit: 2693ce1a253e5fe2f684d5805b7b7c12e6294b71 URL: http://source.winehq.org/git/wine.git/?a=commit;h=2693ce1a253e5fe2f684d5805b...
Author: Piotr Caban piotr@codeweavers.com Date: Thu Mar 20 16:20:26 2014 +0100
msvcrt: Don't add 0x prefix while printing 0 with printf.
---
dlls/msvcrt/printf.h | 8 +++++--- dlls/msvcrt/tests/printf.c | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+), 3 deletions(-)
diff --git a/dlls/msvcrt/printf.h b/dlls/msvcrt/printf.h index 96e7845..a462f3a 100644 --- a/dlls/msvcrt/printf.h +++ b/dlls/msvcrt/printf.h @@ -265,9 +265,11 @@ static inline void FUNC_NAME(pf_integer_conv)(APICHAR *buf, int buf_len, }
i = 0; - if(x==0 && flags->Precision) - buf[i++] = '0'; - else { + if(x == 0) { + flags->Alternate = 0; + if(flags->Precision) + buf[i++] = '0'; + } else { while(x != 0) { j = (ULONGLONG)x%base; x = (ULONGLONG)x/base; diff --git a/dlls/msvcrt/tests/printf.c b/dlls/msvcrt/tests/printf.c index 24bc401..829b2e0 100644 --- a/dlls/msvcrt/tests/printf.c +++ b/dlls/msvcrt/tests/printf.c @@ -329,18 +329,52 @@ static void test_sprintf( void ) format = "%#012x"; r = sprintf(buffer,format,1); ok(!strcmp(buffer,"0x0000000001"),"Hexadecimal zero-padded "%s"\n",buffer); + ok( r==12, "return count wrong\n"); + + r = sprintf(buffer,format,0); + ok(!strcmp(buffer,"000000000000"),"Hexadecimal zero-padded "%s"\n",buffer); + ok( r==12, "return count wrong\n");
format = "%#04.8x"; r = sprintf(buffer,format,1); ok(!strcmp(buffer,"0x00000001"), "Hexadecimal zero-padded precision "%s"\n",buffer); + ok( r==10, "return count wrong\n"); + + r = sprintf(buffer,format,0); + ok(!strcmp(buffer,"00000000"), "Hexadecimal zero-padded precision "%s"\n",buffer); + ok( r==8, "return count wrong\n");
format = "%#-08.2x"; r = sprintf(buffer,format,1); ok(!strcmp(buffer,"0x01 "), "Hexadecimal zero-padded not left-adjusted "%s"\n",buffer); + ok( r==8, "return count wrong\n"); + + r = sprintf(buffer,format,0); + ok(!strcmp(buffer,"00 "), "Hexadecimal zero-padded not left-adjusted "%s"\n",buffer); + ok( r==8, "return count wrong\n"); + + format = "%#.0x"; + r = sprintf(buffer,format,1); + ok(!strcmp(buffer,"0x1"), "Hexadecimal zero-padded zero-precision "%s"\n",buffer); + ok( r==3, "return count wrong\n"); + + r = sprintf(buffer,format,0); + ok(!strcmp(buffer,""), "Hexadecimal zero-padded zero-precision "%s"\n",buffer); + ok( r==0, "return count wrong\n");
format = "%#08o"; r = sprintf(buffer,format,1); ok(!strcmp(buffer,"00000001"), "Octal zero-padded "%s"\n",buffer); + ok( r==8, "return count wrong\n"); + + format = "%#o"; + r = sprintf(buffer,format,1); + ok(!strcmp(buffer,"01"), "Octal zero-padded "%s"\n",buffer); + ok( r==2, "return count wrong\n"); + + r = sprintf(buffer,format,0); + ok(!strcmp(buffer,"0"), "Octal zero-padded "%s"\n",buffer); + ok( r==1, "return count wrong\n");
if (sizeof(void *) == 8) {