1 | #include <mcheck.h> |
---|---|
2 | #include <obstack.h> |
3 | #include <stdio.h> |
4 | #include <stdlib.h> |
5 | |
6 | |
7 | static int |
8 | do_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 (obstack: &ob, format: "%.*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 (obstack: &ob, format: "%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 |