diff --git a/dlls/msvcrt/tests/printf.c b/dlls/msvcrt/tests/printf.c index 87efd161247..d32ef737abb 100644 --- a/dlls/msvcrt/tests/printf.c +++ b/dlls/msvcrt/tests/printf.c @@ -40,6 +40,8 @@ static int (__cdecl *p__vsnwprintf_s)(wchar_t *str, size_t sizeOfBuffer, __ms_va_list valist); static int (__cdecl *p__ecvt_s)(char *buffer, size_t length, double number, int ndigits, int *decpt, int *sign); +static int (__cdecl *p__fcvt_s)(char *buffer, size_t length, double number, + int ndigits, int *decpt, int *sign); static void init( void ) { @@ -49,6 +51,7 @@ static void init( void ) p__vscwprintf = (void *)GetProcAddress(hmod, "_vscwprintf"); p__vsnwprintf_s = (void *)GetProcAddress(hmod, "_vsnwprintf_s"); p__ecvt_s = (void *)GetProcAddress(hmod, "_ecvt_s"); + p__fcvt_s = (void *)GetProcAddress(hmod, "_fcvt_s"); } static void test_sprintf( void ) @@ -799,7 +802,7 @@ static void test_xcvt(void) "_fcvt() decimal point wrong, got %d expected %d\n", decpt, test_cvt_testcases[i].expdecpt_f); ok( sign == test_cvt_testcases[i].expsign, - "_ecvt() sign wrong, got %d expected %d\n", sign, + "_fcvt() sign wrong, got %d expected %d\n", sign, test_cvt_testcases[i].expsign); } @@ -823,7 +826,29 @@ static void test_xcvt(void) free(str); } else - win_skip("_ecvt_s not available\n"); + win_skip("_ecvt_s not available\n"); + + if (p__fcvt_s) + { + str = malloc(1024); + for( i = 0; strcmp( test_cvt_testcases[i].expstr_e, "END"); i++){ + decpt = sign = 100; + err = p__fcvt_s(str, 1024, test_cvt_testcases[i].value, test_cvt_testcases[i].nrdigits, &decpt, &sign); + ok(err == 0, "_fcvt_s() failed with error code %d", err); + ok( 0 == strncmp( str, test_cvt_testcases[i].expstr_f, 15), + "_fcvt_s() bad return, got \n'%s' expected \n'%s'\n", str, + test_cvt_testcases[i].expstr_e); + ok( decpt == test_cvt_testcases[i].expdecpt_f, + "_fcvt_s() decimal point wrong, got %d expected %d\n", decpt, + test_cvt_testcases[i].expdecpt_e); + ok( sign == test_cvt_testcases[i].expsign, + "_fcvt_s() sign wrong, got %d expected %d\n", sign, + test_cvt_testcases[i].expsign); + } + free(str); + } + else + todo_wine win_skip("_fcvt_s not available\n"); } static int __cdecl _vsnwprintf_wrapper(wchar_t *str, size_t len, const wchar_t *format, ...)