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 <stdio.h>
22: #include <stdlib.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:
38: errno = 0;
39:
40: p = malloc (-1);
41:
42: if (p != NULL)
43: merror ("malloc (-1) succeeded.");
44: else if (errno != ENOMEM)
45: merror ("errno is not set correctly.");
46:
47: p = malloc (10);
48: if (p == NULL)
49: merror ("malloc (10) failed.");
50:
51: p = realloc (p, 0);
52: if (p != NULL)
53: merror ("realloc (p, 0) failed.");
54:
55: p = malloc (0);
56: if (p == NULL)
57: merror ("malloc (0) failed.");
58:
59: p = realloc (p, 0);
60: if (p != NULL)
61: merror ("realloc (p, 0) failed.");
62:
63: q = malloc (256);
64: if (q == NULL)
65: merror ("malloc (256) failed.");
66:
67: p = malloc (512);
68: if (p == NULL)
69: merror ("malloc (512) failed.");
70:
71: if (realloc (p, -256) != NULL)
72: merror ("realloc (p, -256) succeeded.");
73: else if (errno != ENOMEM)
74: merror ("errno is not set correctly.");
75:
76: free (p);
77:
78: p = malloc (512);
79: if (p == NULL)
80: merror ("malloc (512) failed.");
81:
82: if (realloc (p, -1) != NULL)
83: merror ("realloc (p, -1) succeeded.");
84: else if (errno != ENOMEM)
85: merror ("errno is not set correctly.");
86:
87: free (p);
88: free (q);
89:
90: return errors != 0;
91: }