Tom Hughes 2713ff3519 Use longs to get the error counts as valgrind will expect to return a
machine word. Based on diagnosis by Robert Walsh <rjwalsh@durables.org>.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3792
2005-05-24 07:22:13 +00:00

58 lines
1.3 KiB
C

#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include "../memcheck.h"
int main(void)
{
int x;
int y = 0;
int* reachable;
int* dubious;
int* leaked;
long n_reachable = 0;
long n_dubious = 0;
long n_leaked = 0;
long n_suppressed = 0;
/* we require these longs to have same size as a machine word */
assert(sizeof(long) == sizeof(void*));
/* Error counting */
printf("errors: %d\n", VALGRIND_COUNT_ERRORS);
if (x == 0) {
y++;
} else {
y--;
}
printf("errors: %d\n", VALGRIND_COUNT_ERRORS);
/* Leak checking */
VALGRIND_DO_LEAK_CHECK;
VALGRIND_COUNT_LEAKS(n_leaked, n_dubious, n_reachable, n_suppressed);
if (n_reachable == 24) n_reachable = 0; /* handle glibc differences */
printf("leaks: %ldB, %ldB, %ldB, %ldB\n",
n_leaked, n_dubious, n_reachable, n_suppressed);
leaked = malloc(77);
leaked = 0;
dubious = malloc(88);
dubious += 10;
reachable = malloc(99);
VALGRIND_DO_LEAK_CHECK;
VALGRIND_DO_LEAK_CHECK;
VALGRIND_COUNT_LEAKS(n_leaked, n_dubious, n_reachable, n_suppressed);
if (n_reachable == 123) n_reachable = 99; /* handle glibc differences */
printf("leaks: %ldB, %ldB, %ldB, %ldB\n",
n_leaked, n_dubious, n_reachable, n_suppressed);
printf("errors: %d\n", VALGRIND_COUNT_ERRORS);
return 0;
}