Hi Sean, On Sun, 2 May 2021 at 20:55, Sean Anderson <[email protected]> wrote: > > 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 <[email protected]> > --- > > 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); > + }
Can you explain this a bit more? What is the difference? Do you need the cast? > > if ((new < mem_malloc_start) || (new > mem_malloc_end)) > return (void *)MORECORE_FAILURE; > -- > 2.31.0 > Regards, Simon

