blob: 7ec6dbfff9c079106c3484ebf778cddc74ed498e [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;
13 int n_reachable = 0;
14 int n_dubious = 0;
15 int n_leaked = 0;
16 int 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 */
njn47363ab2003-04-21 13:24:40 +000036 printf("leaks: %dB, %dB, %dB, %dB\n",
37 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 */
njn47363ab2003-04-21 13:24:40 +000051 printf("leaks: %dB, %dB, %dB, %dB\n",
52 n_leaked, n_dubious, n_reachable, n_suppressed);
53
54 printf("errors: %d\n", VALGRIND_COUNT_ERRORS);
55
56 return 0;
57}