1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20: #include <errno.h>
21: #include <malloc.h>
22: #include <stdio.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 *p, *q;
37: int save;
38:
39: errno = 0;
40:
41: p = malloc (-1);
42: save = errno;
43:
44: if (p != NULL)
45: merror ("malloc (-1) succeeded.");
46:
47: if (p == NULL && save != ENOMEM)
48: merror ("errno is not set correctly");
49:
50: p = malloc (10);
51: if (p == NULL)
52: merror ("malloc (10) failed.");
53:
54:
55: p = realloc (p, 0);
56: if (p != NULL)
57: merror ("realloc (p, 0) failed.");
58:
59: p = malloc (0);
60: if (p == NULL)
61: merror ("malloc (0) failed.");
62:
63: p = realloc (p, 0);
64: if (p != NULL)
65: merror ("realloc (p, 0) failed.");
66:
67: p = malloc (513 * 1024);
68: if (p == NULL)
69: merror ("malloc (513K) failed.");
70:
71: q = malloc (-512 * 1024);
72: if (q != NULL)
73: merror ("malloc (-512K) succeeded.");
74:
75: free (p);
76:
77: return errors != 0;
78: }