diff --git a/[refs] b/[refs] index e43d284186eb..fd0eea916700 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 991eb43af989002d5c7f4a2ff2a6c806a912b51b +refs/heads/master: 1c2de47cd47daa033251dbb4a3643e7e87a681b0 diff --git a/trunk/arch/powerpc/lib/rheap.c b/trunk/arch/powerpc/lib/rheap.c index b2f6dcc59600..180ee2933ab9 100644 --- a/trunk/arch/powerpc/lib/rheap.c +++ b/trunk/arch/powerpc/lib/rheap.c @@ -468,25 +468,19 @@ unsigned long rh_alloc_align(rh_info_t * info, int size, int alignment, const ch if (blk->size == size) { /* Move from free list to taken list */ list_del(&blk->list); - blk->owner = owner; - start = blk->start; - - attach_taken_block(info, blk); + newblk = blk; + } else { + newblk = get_slot(info); + newblk->start = blk->start; + newblk->size = size; - return start; + /* blk still in free list, with updated start, size */ + blk->start += size; + blk->size -= size; } - newblk = get_slot(info); - newblk->start = blk->start; - newblk->size = size; newblk->owner = owner; - - /* blk still in free list, with updated start, size */ - blk->start += size; - blk->size -= size; - start = newblk->start; - attach_taken_block(info, newblk); /* for larger alignment return fixed up pointer */