diff --git a/modules/rostests/apitests/crt/_mbsncat.c b/modules/rostests/apitests/crt/_mbsncat.c new file mode 100644 index 00000000000..392ca1026f0 --- /dev/null +++ b/modules/rostests/apitests/crt/_mbsncat.c @@ -0,0 +1,31 @@ +/* + * PROJECT: ReactOS API tests + * LICENSE: LGPL-2.1-or-later (https://spdx.org/licenses/LGPL-2.1-or-later) + * PURPOSE: Tests for _mbsnbcat + * COPYRIGHT: Copyright 2025 Doug Lyons (douglyons@douglyons.com) + */ + +#include +#include +#define WIN32_NO_STATUS + +START_TEST(_mbsncat) +{ + /* use function pointer to bypass gcc builtin */ + unsigned char *(__cdecl *p__mbsnbcat)(unsigned char*,const unsigned char*,size_t); + p__mbsnbcat = (void *)GetProcAddress( GetModuleHandleA("msvcrt.dll"), "_mbsnbcat"); + + + unsigned char dest[16]; + const unsigned char first[] = "dinosaur"; + const unsigned char second[] = "duck"; + unsigned char *s; + + memset(dest, 'X', sizeof(dest)); + memcpy(dest, first, sizeof(first)); + s = p__mbsnbcat(dest, second, sizeof(second) - 1); + ok(!memcmp(dest, "dinosaurduck", sizeof("dinosaurduck")), + "Expected the output buffer string to be \"dinosaurduck\", got '%s'\n", dest); + ok(!memcmp(s, "dinosaurduck", sizeof("dinosaurduck")), + "Expected the output buffer string to be \"dinosaurduck\", got '%s'\n", dest); +} diff --git a/modules/rostests/apitests/crtdll/CMakeLists.txt b/modules/rostests/apitests/crtdll/CMakeLists.txt index 4a4a012c374..ebb6049786e 100644 --- a/modules/rostests/apitests/crtdll/CMakeLists.txt +++ b/modules/rostests/apitests/crtdll/CMakeLists.txt @@ -1,5 +1,6 @@ list(APPEND SOURCE_CRTDLL + ../crt/_mbsncat.c ../crt/_mbsncmp.c ../crt/_mbsstr.c ../crt/setjmp.c diff --git a/modules/rostests/apitests/crtdll/testlist.c b/modules/rostests/apitests/crtdll/testlist.c index 53eaab58e40..a7681a1a0ab 100644 --- a/modules/rostests/apitests/crtdll/testlist.c +++ b/modules/rostests/apitests/crtdll/testlist.c @@ -2,6 +2,7 @@ #define STANDALONE #include +extern void func__mbsncat(void); extern void func__mbsncmp(void); extern void func__mbsstr(void); extern void func__snprintf(void); @@ -22,6 +23,7 @@ extern void func_wctomb(void); const struct test winetest_testlist[] = { + { "_mbsncat", func__mbsncat }, { "_mbsncmp", func__mbsncmp }, { "_mbsstr", func__mbsstr }, { "_snprintf", func__snprintf },