/ tests / wchar.c
wchar.c
 1  #include <stdio.h>
 2  #include <stdlib.h>
 3  #include <string.h>
 4  #include <wchar.h>
 5  
 6  #include <darwintest.h>
 7  
 8  /* 
 9   * Test courtesy of Roel Standaert
10   * Source: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=209907 
11   */
12  T_DECL(wchar_PR_26556792, "wcsrtombs neglects to set src pointer on EILSEQ error")
13  {
14      char out[64];
15      wchar_t *in = L"Hello! \x20AC Hello!";
16      const wchar_t *inptr = in;
17      mbstate_t state = {{0}};
18  
19      T_ASSERT_EQ((size_t)-1, wcsrtombs(out, &inptr, sizeof(out), &state), NULL);
20      T_EXPECT_EQ((long)(inptr - in), (long)7, NULL);
21  }
22  
23  
24  T_DECL(wchar_PR_26828480, "double free in __vfwprintf")
25  {
26      wchar_t *test;
27      int ret;
28  
29      test = (wchar_t *) malloc(512 * sizeof(wchar_t));
30      ret = swprintf(test, 512, L"%a, %s\n", 3.14, (char *) NULL);
31  
32      free(test);
33      T_ASSERT_GT(ret, 0, "swprintf");
34  }