diff --git a/dlls/msvcrt/tests/printf.c b/dlls/msvcrt/tests/printf.c index 90f95fc5ce1..da4010e90bb 100644 --- a/dlls/msvcrt/tests/printf.c +++ b/dlls/msvcrt/tests/printf.c @@ -131,6 +131,16 @@ static void test_sprintf( void ) ok(!strcmp(buffer,"-s"), "failed\n"); ok( r==2, "return count wrong\n"); + format = "%ls"; + r = sprintf(buffer, format, wide ); + ok(!strcmp(buffer,"wide"), "failed\n"); + ok( r==4, "return count wrong\n"); + + format = "%Ls"; + r = sprintf(buffer, format, "not wide" ); + ok(!strcmp(buffer,"not wide"), "failed\n"); + ok( r==8, "return count wrong\n"); + format = "%b"; r = sprintf(buffer, format); ok(!strcmp(buffer,"b"), "failed\n"); diff --git a/dlls/msvcrt/wcs.c b/dlls/msvcrt/wcs.c index 66d782f034a..4caf5a7c448 100644 --- a/dlls/msvcrt/wcs.c +++ b/dlls/msvcrt/wcs.c @@ -501,7 +501,7 @@ static int pf_vsnprintf( pf_output *out, const WCHAR *format, va_list valist ) r = 0; /* output a unicode string */ - if( ( flags.Format == 's' && flags.WideString ) || + if( ( flags.Format == 's' && (flags.WideString || flags.IntegerLength == 'l' )) || ( !out->unicode && flags.Format == 'S' ) || ( out->unicode && flags.Format == 's' ) ) {