From eaae81082cb76efa43a2c3fb57997b28ca270634 Mon Sep 17 00:00:00 2001 From: Ben Cheng Date: Wed, 21 Mar 2012 15:47:12 -0700 Subject: Initialize mspace->least_addr properly in the mmap path. BUG: 6206963 Change-Id: Id2ab580246de50a4511b56a734a7bece98fb945c --- libc/bionic/dlmalloc.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'libc/bionic') diff --git a/libc/bionic/dlmalloc.c b/libc/bionic/dlmalloc.c index 496cd1c..98ea9e9 100644 --- a/libc/bionic/dlmalloc.c +++ b/libc/bionic/dlmalloc.c @@ -3332,7 +3332,7 @@ static void* mmap_alloc(mstate m, size_t nb) { chunk_plus_offset(p, psize)->head = FENCEPOST_HEAD; chunk_plus_offset(p, psize+SIZE_T_SIZE)->head = 0; - if (mm < m->least_addr) + if (m->least_addr == 0 || mm < m->least_addr) m->least_addr = mm; if ((m->footprint += mmsize) > m->max_footprint) m->max_footprint = m->footprint; @@ -3678,7 +3678,9 @@ static void* sys_alloc(mstate m, size_t nb) { m->max_footprint = m->footprint; if (!is_initialized(m)) { /* first-time initialization */ - m->seg.base = m->least_addr = tbase; + if (m->least_addr == 0 || tbase < m->least_addr) + m->least_addr = tbase; + m->seg.base = tbase; m->seg.size = tsize; m->seg.sflags = mmap_flag; m->magic = mparams.magic; -- cgit v1.1