| #include <mcheck.h> |
| #include <obstack.h> |
| #include <stdio.h> |
| #include <stdlib.h> |
| |
| |
| int |
| main (void) |
| { |
| struct obstack ob; |
| int n; |
| |
| mcheck_pedantic (NULL); |
| |
| #define obstack_chunk_alloc malloc |
| #define obstack_chunk_free free |
| |
| obstack_init (&ob); |
| |
| for (n = 0; n < 40000; ++n) |
| { |
| mcheck_check_all (); |
| obstack_printf (&ob, "%.*s%05d", 1 + n % 7, "foobarbaz", n); |
| if (n % 777 == 0) |
| obstack_finish (&ob); |
| } |
| |
| /* Another loop where we finish all objects, each of size 1. This will |
| manage to call `obstack_print' with all possible positions inside |
| an obstack chunk. */ |
| for (n = 0; n < 40000; ++n) |
| { |
| mcheck_check_all (); |
| obstack_printf (&ob, "%c", 'a' + n % 26); |
| obstack_finish (&ob); |
| } |
| |
| /* And a final check. */ |
| mcheck_check_all (); |
| |
| return 0; |
| } |