| #include <mcheck.h> | 
 | #include <stdio.h> | 
 |  | 
 |  | 
 | #ifndef CHAR_T | 
 | # define CHAR_T char | 
 | # define W(o) o | 
 | # define OPEN_MEMSTREAM open_memstream | 
 | #endif | 
 |  | 
 | #define S(s) S1 (s) | 
 | #define S1(s) #s | 
 |  | 
 |  | 
 | static void | 
 | mcheck_abort (enum mcheck_status ev) | 
 | { | 
 |   printf ("mecheck failed with status %d\n", (int) ev); | 
 |   exit (1); | 
 | } | 
 |  | 
 |  | 
 | static int | 
 | do_test (void) | 
 | { | 
 |   mcheck_pedantic (mcheck_abort); | 
 |  | 
 |   CHAR_T *buf = (CHAR_T *) 1l; | 
 |   size_t len = 12345; | 
 |   FILE *fp = OPEN_MEMSTREAM (&buf, &len); | 
 |   if (fp == NULL) | 
 |     { | 
 |       printf ("%s failed\n", S(OPEN_MEMSTREAM)); | 
 |       return 1; | 
 |     } | 
 |  | 
 |   if (fflush (fp) != 0) | 
 |     { | 
 |       puts ("fflush failed"); | 
 |       return 1; | 
 |     } | 
 |  | 
 |   if (len != 0) | 
 |     { | 
 |       puts ("string after no write not empty"); | 
 |       return 1; | 
 |     } | 
 |   if (buf == (CHAR_T *) 1l) | 
 |     { | 
 |       puts ("buf not updated"); | 
 |       return 1; | 
 |     } | 
 |   if (buf[0] != W('\0')) | 
 |     { | 
 |       puts ("buf[0] != 0"); | 
 |       return 1; | 
 |     } | 
 |  | 
 |   buf = (CHAR_T *) 1l; | 
 |   len = 12345; | 
 |   if (fclose (fp) != 0) | 
 |     { | 
 |       puts ("fclose failed"); | 
 |       return 1; | 
 |     } | 
 |  | 
 |   if (len != 0) | 
 |     { | 
 |       puts ("string after close with no write not empty"); | 
 |       return 1; | 
 |     } | 
 |   if (buf == (CHAR_T *) 1l) | 
 |     { | 
 |       puts ("buf not updated"); | 
 |       return 1; | 
 |     } | 
 |   if (buf[0] != W('\0')) | 
 |     { | 
 |       puts ("buf[0] != 0"); | 
 |       return 1; | 
 |     } | 
 |  | 
 |   free (buf); | 
 |  | 
 |   return 0; | 
 | } | 
 |  | 
 | #define TEST_FUNCTION do_test () | 
 | #include "../test-skeleton.c" |