From 02af7e7ecb7ebe01e2235e23278a0129f1cc01d6 Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Thu, 11 Sep 2025 18:08:39 +0300 Subject: [PATCH] [CRT_APITEST] Fix tests for wctomb - Dynamically load function from the appropriate DLL - Remove from ntdll_apitest (these are not exported by ntdll) --- modules/rostests/apitests/crt/wctomb.c | 19 +++++++++++++++++++ .../rostests/apitests/ntdll/CMakeLists.txt | 2 -- modules/rostests/apitests/ntdll/testlist.c | 4 ---- 3 files changed, 19 insertions(+), 6 deletions(-) diff --git a/modules/rostests/apitests/crt/wctomb.c b/modules/rostests/apitests/crt/wctomb.c index 04cb791e516..12571729942 100644 --- a/modules/rostests/apitests/crt/wctomb.c +++ b/modules/rostests/apitests/crt/wctomb.c @@ -18,6 +18,17 @@ #define todo_static todo_if(1) #else #define todo_static +typedef int (__cdecl *PFN_wctomb)(char *mbchar, wchar_t wchar); +static PFN_wctomb p_wctomb; + +static BOOL Init(void) +{ + HMODULE hdll = LoadLibraryA(TEST_DLL_NAME); + p_wctomb = (PFN_wctomb)GetProcAddress(hdll, "wctomb"); + ok(p_wctomb != NULL, "Failed to load wctomb from %s\n", TEST_DLL_NAME); + return (p_wctomb != NULL); +} +#define wctomb p_wctomb #endif START_TEST(wctomb) @@ -28,6 +39,14 @@ START_TEST(wctomb) unsigned int codepage = ___lc_codepage_func(); wchar_t wchSrc[2] = {L'R', 0414}; // 0414 corresponds to a Russian character in Windows-1251 +#ifndef TEST_STATIC_CRT + if (!Init()) + { + skip("Skipping tests, because wctomb is not available\n"); + return; + } +#endif + chDest = AllocateGuarded(sizeof(*chDest)); if (!chDest) { diff --git a/modules/rostests/apitests/ntdll/CMakeLists.txt b/modules/rostests/apitests/ntdll/CMakeLists.txt index 10009e1f1f0..ecd6c43138d 100644 --- a/modules/rostests/apitests/ntdll/CMakeLists.txt +++ b/modules/rostests/apitests/ntdll/CMakeLists.txt @@ -14,7 +14,6 @@ list(APPEND SOURCE_CRT_TESTS ../crt/_vsnprintf.c ../crt/_vsnwprintf.c ../crt/mbstowcs.c - ../crt/mbtowc.c ../crt/setjmp.c ../crt/sprintf.c ../crt/strcpy.c @@ -22,7 +21,6 @@ list(APPEND SOURCE_CRT_TESTS ../crt/strtoul.c ../crt/wcstombs.c ../crt/wcstoul.c - ../crt/wctomb.c ) add_library(ntdll_crt_test_lib ${SOURCE_CRT_TESTS}) diff --git a/modules/rostests/apitests/ntdll/testlist.c b/modules/rostests/apitests/ntdll/testlist.c index 24739d92aa0..2c64fdd94b9 100644 --- a/modules/rostests/apitests/ntdll/testlist.c +++ b/modules/rostests/apitests/ntdll/testlist.c @@ -8,14 +8,12 @@ extern void func__vscwprintf(void); extern void func__vsnprintf(void); extern void func__vsnwprintf(void); extern void func_mbstowcs(void); -extern void func_mbtowc(void); extern void func_setjmp(void); extern void func_sprintf(void); extern void func_strcpy(void); extern void func_strlen(void); extern void func_strtoul(void); extern void func_wcstoul(void); -extern void func_wctomb(void); extern void func_wcstombs(void); extern void func_DllLoadNotification(void); @@ -135,14 +133,12 @@ const struct test winetest_testlist[] = { "_vsnprintf", func__vsnprintf }, { "_vsnwprintf", func__vsnwprintf }, { "mbstowcs", func_mbstowcs }, - { "mbtowc", func_mbtowc }, { "setjmp", func_setjmp }, { "sprintf", func_sprintf }, { "strcpy", func_strcpy }, { "strlen", func_strlen }, { "strtoul", func_strtoul }, { "wcstoul", func_wcstoul }, - { "wctomb", func_wctomb }, { "wcstombs", func_wcstombs }, { "DllLoadNotification", func_DllLoadNotification },