test_mbsnrtowcs_static.c (586B)
1 #include "common.h" 2 3 #include <wchar.h> 4 #include <string.h> 5 6 int main(int argc, char** argv) { 7 wchar_t buffer[4] = {0}; 8 const char *src = "ABCDEFGHIJKLMNOP"; 9 const char *srcp = src; 10 mbstate_t st; 11 memset(&st, 0, sizeof(st)); 12 13 /* Safe: convert up to 4 source bytes into at most 2 wide chars */ 14 srcp = src; 15 mbsnrtowcs(buffer, &srcp, 4, 2, &st); 16 17 /* Unsafe: ask to write 16 wide chars into 4-element buffer */ 18 srcp = src; 19 memset(&st, 0, sizeof(st)); 20 CHK_FAIL_START 21 mbsnrtowcs(buffer, &srcp, 16, 16, &st); 22 CHK_FAIL_END 23 24 printf("%ls\n", buffer); 25 return ret; 26 }