* sysdeps/mips/bits/setjmp.h: Store all N32 and N64 registers, including pc, gp,...
[jlayton/glibc.git] / malloc / tst-mallocstate.c
1 /* Copyright (C) 2001 Free Software Foundation, Inc.
2    This file is part of the GNU C Library.
3    Contributed by Wolfram Gloger <wg@malloc.de>, 2001.
4
5    The GNU C Library is free software; you can redistribute it and/or
6    modify it under the terms of the GNU Lesser General Public
7    License as published by the Free Software Foundation; either
8    version 2.1 of the License, or (at your option) any later version.
9
10    The GNU C Library is distributed in the hope that it will be useful,
11    but WITHOUT ANY WARRANTY; without even the implied warranty of
12    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13    Lesser General Public License for more details.
14
15    You should have received a copy of the GNU Lesser General Public
16    License along with the GNU C Library; if not, write to the Free
17    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
18    02111-1307 USA.  */
19
20 #include <errno.h>
21 #include <stdio.h>
22 #include "malloc.h"
23
24 static int errors = 0;
25
26 static void
27 merror (const char *msg)
28 {
29   ++errors;
30   printf ("Error: %s\n", msg);
31 }
32
33 int
34 main (void)
35 {
36   void *p1, *p2;
37   void *save_state;
38   long i;
39
40   errno = 0;
41
42   p1 = malloc (10);
43   if (p1 == NULL)
44     merror ("malloc (10) failed.");
45
46   p2 = malloc (20);
47   if (p2 == NULL)
48     merror ("malloc (20) failed.");
49
50   free (malloc (10));
51
52   for (i=0; i<100; ++i)
53     {
54       save_state = malloc_get_state ();
55       if (save_state == NULL)
56         {
57           merror ("malloc_get_state () failed.");
58           break;
59         }
60       /*free (malloc (10)); This could change the top chunk! */
61       malloc_set_state (save_state);
62       p1 = realloc (p1, i*4 + 4);
63       if (p1 == NULL)
64         merror ("realloc (i*4) failed.");
65       free (save_state);
66     }
67
68   p1 = realloc (p1, 40);
69   free (p2);
70   p2 = malloc (10);
71   if (p2 == NULL)
72     merror ("malloc (10) failed.");
73   free (p1);
74
75   return errors != 0;
76 }
77
78 /*
79  * Local variables:
80  * c-basic-offset: 2
81  * End:
82  */