1ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// Test for bug 100628: need to allow custom MALLOCLIKE blocks to overlap 2ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// with normal malloc() blocks in leak-checking -- if it happens, we ignore 3ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// the malloc() block during the leak check. 4ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 5ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#include <stdlib.h> 6ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#include "valgrind.h" 7ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 8ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownint main(void) 9ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown{ 10ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown char* x; 11ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 12ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown // For this one, the first custom block overlaps exactly with the start of 13ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown // the malloc block. 14ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown x = malloc(1000); 15ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown VALGRIND_MALLOCLIKE_BLOCK(x, /*szB*/ 16, /*rzB*/0, /*isZeroed*/0); 16ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown VALGRIND_MALLOCLIKE_BLOCK(x+100, /*szB*/ 32, /*rzB*/0, /*isZeroed*/0); 17ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown VALGRIND_MALLOCLIKE_BLOCK(x+200, /*szB*/ 64, /*rzB*/0, /*isZeroed*/0); 18ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown VALGRIND_MALLOCLIKE_BLOCK(x+300, /*szB*/128, /*rzB*/0, /*isZeroed*/0); 19ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 20ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown // For this one, the first custom block does not overlap exactly with the 21ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown // start of the malloc block. 22ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown x = malloc(1000); 23ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown VALGRIND_MALLOCLIKE_BLOCK(x+100, /*szB*/ 32, /*rzB*/0, /*isZeroed*/0); 24ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown VALGRIND_MALLOCLIKE_BLOCK(x+200, /*szB*/ 64, /*rzB*/0, /*isZeroed*/0); 25ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown VALGRIND_MALLOCLIKE_BLOCK(x+300, /*szB*/128, /*rzB*/0, /*isZeroed*/0); 26ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 27ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown return 0; 28ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown} 29