Module: wine Branch: master Commit: 90f31aa3811ef3e9920796d51b8da748c15cff05 URL: http://source.winehq.org/git/wine.git/?a=commit;h=90f31aa3811ef3e9920796d51b...
Author: Alexandre Julliard julliard@winehq.org Date: Wed Jan 27 13:35:32 2010 +0100
ntdll: Always enable tail checking when running under Valgrind.
---
dlls/ntdll/heap.c | 12 +++++++----- 1 files changed, 7 insertions(+), 5 deletions(-)
diff --git a/dlls/ntdll/heap.c b/dlls/ntdll/heap.c index c3fdf2c..1055ce0 100644 --- a/dlls/ntdll/heap.c +++ b/dlls/ntdll/heap.c @@ -29,6 +29,8 @@ #include <string.h> #ifdef HAVE_VALGRIND_MEMCHECK_H #include <valgrind/memcheck.h> +#else +#define RUNNING_ON_VALGRIND 0 #endif
#define NONAMELESSUNION @@ -107,7 +109,7 @@ C_ASSERT( sizeof(ARENA_LARGE) % LARGE_ALIGNMENT == 0 ); /* minimum size to start allocating large blocks */ #define HEAP_MIN_LARGE_BLOCK_SIZE 0x7f000 /* extra size to add at the end of block for tail checking */ -#define HEAP_TAIL_EXTRA_SIZE(flags) (flags & HEAP_TAIL_CHECKING_ENABLED ? 8 : 0) +#define HEAP_TAIL_EXTRA_SIZE(flags) ((flags & HEAP_TAIL_CHECKING_ENABLED) || RUNNING_ON_VALGRIND ? 8 : 0)
/* Max size of the blocks on the free lists */ static const SIZE_T HEAP_freeListSizes[] = @@ -206,16 +208,16 @@ static inline void mark_block_uninitialized( void *ptr, SIZE_T size ) /* mark a block of memory as a tail block */ static inline void mark_block_tail( void *ptr, SIZE_T size, DWORD flags ) { - mark_block_uninitialized( ptr, size ); if (flags & HEAP_TAIL_CHECKING_ENABLED) { + mark_block_uninitialized( ptr, size ); memset( ptr, ARENA_TAIL_FILLER, size ); + } #if defined(VALGRIND_MAKE_MEM_NOACCESS) - VALGRIND_DISCARD( VALGRIND_MAKE_MEM_NOACCESS( ptr, size )); + VALGRIND_DISCARD( VALGRIND_MAKE_MEM_NOACCESS( ptr, size )); #elif defined( VALGRIND_MAKE_NOACCESS) - VALGRIND_DISCARD( VALGRIND_MAKE_NOACCESS( ptr, size )); + VALGRIND_DISCARD( VALGRIND_MAKE_NOACCESS( ptr, size )); #endif - } }
/* initialize contents of a newly created block of memory */