diff --git a/src/base.c b/src/base.c index 3ab46ec8..df3ddb63 100644 --- a/src/base.c +++ b/src/base.c @@ -121,7 +121,7 @@ base_alloc(size_t size) base_resident += PAGE_CEILING((uintptr_t)ret + csize) - PAGE_CEILING((uintptr_t)ret); } - JEMALLOC_VALGRIND_MAKE_MEM_UNDEFINED(ret, csize); + JEMALLOC_VALGRIND_MAKE_MEM_DEFINED(ret, csize); label_return: malloc_mutex_unlock(&base_mtx); return (ret); diff --git a/src/chunk.c b/src/chunk.c index 70634107..12799659 100644 --- a/src/chunk.c +++ b/src/chunk.c @@ -277,15 +277,21 @@ void * chunk_alloc_cache(arena_t *arena, void *new_addr, size_t size, size_t alignment, bool *zero, bool dalloc_node) { + void *ret; assert(size != 0); assert((size & chunksize_mask) == 0); assert(alignment != 0); assert((alignment & chunksize_mask) == 0); - return (chunk_recycle(arena, &arena->chunks_szad_cache, + ret = chunk_recycle(arena, &arena->chunks_szad_cache, &arena->chunks_ad_cache, true, new_addr, size, alignment, zero, - dalloc_node)); + dalloc_node); + if (ret == NULL) + return (NULL); + if (config_valgrind) + JEMALLOC_VALGRIND_MAKE_MEM_UNDEFINED(ret, size); + return (ret); } static arena_t *