1 #include <mcheck.h> 2 #include <obstack.h> 3 #include <stdio.h> 4 #include <stdlib.h> 5 6 7 static int do_test(void)8do_test (void) 9 { 10 struct obstack ob; 11 int n; 12 13 mcheck_pedantic (NULL); 14 15 #define obstack_chunk_alloc malloc 16 #define obstack_chunk_free free 17 18 obstack_init (&ob); 19 20 for (n = 0; n < 40000; ++n) 21 { 22 mcheck_check_all (); 23 obstack_printf (&ob, "%.*s%05d", 1 + n % 7, "foobarbaz", n); 24 if (n % 777 == 0) 25 obstack_finish (&ob); 26 } 27 28 /* Another loop where we finish all objects, each of size 1. This will 29 manage to call `obstack_print' with all possible positions inside 30 an obstack chunk. */ 31 for (n = 0; n < 40000; ++n) 32 { 33 mcheck_check_all (); 34 obstack_printf (&ob, "%c", 'a' + n % 26); 35 obstack_finish (&ob); 36 } 37 38 /* And a final check. */ 39 mcheck_check_all (); 40 41 return 0; 42 } 43 44 #define TEST_FUNCTION do_test () 45 #include "../test-skeleton.c" 46