
This fixes memory being cleared after releasing it. Instead, clear memory before releasing it. In addition, suppress valgrind warnings about writing to free'd memory.
Signed-off-by: Sean Anderson seanga2@gmail.com ---
common/dlmalloc.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/common/dlmalloc.c b/common/dlmalloc.c index 05c8fd87e7..ea51bdf6a6 100644 --- a/common/dlmalloc.c +++ b/common/dlmalloc.c @@ -592,11 +592,13 @@ void *sbrk(ptrdiff_t increment) ulong new = old + increment;
/* - * if we are giving memory back make sure we clear it out since - * we set MORECORE_CLEARS to 1 + * if we are allocating memory make sure we clear it out since we set + * MORECORE_CLEARS to 1 */ - if (increment < 0) - memset((void *)new, 0, -increment); + if (increment > 0) { + VALGRIND_MAKE_MEM_UNDEFINED(old, increment); + memset((void *)old, 0, increment); + }
if ((new < mem_malloc_start) || (new > mem_malloc_end)) return (void *)MORECORE_FAILURE;