From 73cea916d9bece4ad5201c64db88f177bd283012 Mon Sep 17 00:00:00 2001 From: Jonas 'Sortie' Termansen Date: Thu, 15 May 2014 15:03:54 +0200 Subject: [PATCH] Fix suboptimal heap chunk spliting. --- libc/stdlib/heap.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/libc/stdlib/heap.cpp b/libc/stdlib/heap.cpp index 1256bbda..52f22a57 100644 --- a/libc/stdlib/heap.cpp +++ b/libc/stdlib/heap.cpp @@ -1,6 +1,6 @@ /******************************************************************************* - Copyright(C) Jonas 'Sortie' Termansen 2011, 2012, 2013. + Copyright(C) Jonas 'Sortie' Termansen 2011, 2012, 2013, 2014. This file is part of the Sortix C Library. @@ -493,9 +493,10 @@ extern "C" void* malloc(size_t size) assert(!bins[binindex] || bins[binindex]->IsSane()); // If we don't use the entire chunk. - if ( OVERHEAD <= binsize - size ) + size_t original_chunk_size = chunk->size; + if ( OVERHEAD <= original_chunk_size - size ) { - size_t left = binsize - size; + size_t left = original_chunk_size - size; chunk->size -= left; chunk->GetTrailer()->size = chunk->size;