blob: 89c0c23b0b94a85c2226d38dc020eb3e2091e9ae [file] [log] [blame]
njn47363ab2003-04-21 13:24:40 +00001#include <stdio.h>
2#include <stdlib.h>
sewardj2e261a32005-05-12 18:01:15 +00003#include <assert.h>
njn47363ab2003-04-21 13:24:40 +00004#include "../memcheck.h"
5
6int main(void)
7{
8 int x;
9 int y = 0;
10 int* reachable;
11 int* dubious;
12 int* leaked;
tom0c84ad22005-05-24 07:22:13 +000013 long n_reachable = 0;
14 long n_dubious = 0;
15 long n_leaked = 0;
16 long n_suppressed = 0;
njn47363ab2003-04-21 13:24:40 +000017
sewardj2e261a32005-05-12 18:01:15 +000018 /* we require these longs to have same size as a machine word */
19 assert(sizeof(long) == sizeof(void*));
20
njn47363ab2003-04-21 13:24:40 +000021 /* Error counting */
22 printf("errors: %d\n", VALGRIND_COUNT_ERRORS);
23
24 if (x == 0) {
25 y++;
26 } else {
27 y--;
28 }
29
30 printf("errors: %d\n", VALGRIND_COUNT_ERRORS);
31
32 /* Leak checking */
33 VALGRIND_DO_LEAK_CHECK;
34 VALGRIND_COUNT_LEAKS(n_leaked, n_dubious, n_reachable, n_suppressed);
sewardj0b666d82003-07-08 00:13:51 +000035 if (n_reachable == 24) n_reachable = 0; /* handle glibc differences */
tom0c84ad22005-05-24 07:22:13 +000036 printf("leaks: %ldB, %ldB, %ldB, %ldB\n",
njn47363ab2003-04-21 13:24:40 +000037 n_leaked, n_dubious, n_reachable, n_suppressed);
38
39 leaked = malloc(77);
40 leaked = 0;
41
42 dubious = malloc(88);
43 dubious += 10;
44
45 reachable = malloc(99);
46
47 VALGRIND_DO_LEAK_CHECK;
njne8b5c052003-07-22 22:03:58 +000048 VALGRIND_DO_LEAK_CHECK;
njn47363ab2003-04-21 13:24:40 +000049 VALGRIND_COUNT_LEAKS(n_leaked, n_dubious, n_reachable, n_suppressed);
thughes48841f02004-10-31 11:31:16 +000050 if (n_reachable == 123) n_reachable = 99; /* handle glibc differences */
tom0c84ad22005-05-24 07:22:13 +000051 printf("leaks: %ldB, %ldB, %ldB, %ldB\n",
njn47363ab2003-04-21 13:24:40 +000052 n_leaked, n_dubious, n_reachable, n_suppressed);
53
54 printf("errors: %d\n", VALGRIND_COUNT_ERRORS);
55
56 return 0;
57}