Recently, I'm using barebox in a deep embedded project, and need some funtctions in libc/libm, So I linked barebox with newlib But whenever newlib call sbrk with negtive `increment`, barebox crash. The reason is sbrk clean memory region using `increment`. Why sbrk must clear the increased memory region? --------------------------------8<----------------------------- >From dbaa658b60fe413e1d1818afad13a53e7ad000ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E5=BF=A0=E5=B1=B1?= <zzs213@xxxxxxx> Date: Mon, 22 Apr 2019 11:01:33 +0800 Subject: [PATCH] only clear memory when increasing head size MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 张忠山 <zzs213@xxxxxxx> --- common/memory.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/memory.c b/common/memory.c index 8f0b59891..0a8700d28 100644 --- a/common/memory.c +++ b/common/memory.c @@ -122,7 +122,7 @@ void *sbrk(ptrdiff_t increment) void *old = sbrk_no_zero(increment); /* Only clear increment, if valid address was returned */ - if (old != NULL) + if ((old != NULL) && (increment > 0)) memset(old, 0, increment); return old; -- 2.21.0 -- Best Regards, zzs _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox