From e078816c3516c91f4e226de52f7476a2b4a741bc Mon Sep 17 00:00:00 2001 From: deadwood Date: Wed, 21 May 2014 16:26:10 +0000 Subject: [PATCH] kernel.resource: TLFS - do not try to allocate memory blocks of size 0 or free NULL blocks git-svn-id: https://svn.aros.org/svn/aros/trunk/AROS@49023 fb15a70f-31f2-0310-bbcc-cdcc74a49acc --- rom/kernel/tlsf.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/rom/kernel/tlsf.c b/rom/kernel/tlsf.c index 83318d122e..608404d8bf 100644 --- a/rom/kernel/tlsf.c +++ b/rom/kernel/tlsf.c @@ -340,6 +340,8 @@ void * tlsf_malloc(struct MemHeaderExt *mhe, IPTR size, ULONG *flags) size = ROUNDUP(size); + if (unlikely(!size)) return NULL; + D(nbug("tlsf_malloc(%p, %ld)\n", tlsf, size)); if (mhe->mhe_MemHeader.mh_Attributes & MEMF_SEM_PROTECTED) @@ -545,10 +547,15 @@ static void tlsf_release_memory_area(struct MemHeaderExt * mhe, tlsf_area_t * ar void tlsf_freevec(struct MemHeaderExt * mhe, APTR ptr) { tlsf_t *tlsf = (tlsf_t *)mhe->mhe_UserData; - bhdr_t *fb = MEM_TO_BHDR(ptr); + bhdr_t *fb; bhdr_t *next; tlsf_area_t * area; + if (unlikely(!ptr)) + return; + + fb = MEM_TO_BHDR(ptr); + if (mhe->mhe_MemHeader.mh_Attributes & MEMF_SEM_PROTECTED) ObtainSemaphore((struct SignalSemaphore *)mhe->mhe_MemHeader.mh_Node.ln_Name); -- 2.11.4.GIT