(root)/
glibc-2.38/
stdio-common/
tst-obprintf.c
       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 (&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"