mirror of
				https://sourceware.org/git/glibc.git
				synced 2025-11-03 20:53:13 +03:00 
			
		
		
		
	* 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;
 | 
						|
}
 |