mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-28 04:03:35 +08:00
22d5fbfe74
* stdio-common/tst-obprintf.c (main): Add another check to see obstack_printf handling all possible beginnings of the block inside an obstack chunk.
43 lines
817 B
C
43 lines
817 B
C
#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;
|
|
}
|