X-Authentication-Warning: delorie.com: mailnull set sender to djgpp-workers-bounces using -f From: sandmann AT clio DOT rice DOT edu (Charles Sandmann) Message-Id: <10202121703.AA17270@clio.rice.edu> Subject: Re: Alignment problem To: eliz AT is DOT elta DOT co DOT il (Eli Zaretskii) Date: Tue, 12 Feb 2002 11:03:50 -0600 (CST) Cc: djgpp-workers AT delorie DOT com, rudd AT cyberoptics DOT com In-Reply-To: from "Eli Zaretskii" at Feb 12, 2002 10:28:55 AM X-Mailer: ELM [version 2.5 PL2] Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Reply-To: djgpp-workers AT delorie DOT com Errors-To: nobody AT delorie DOT com X-Mailing-List: djgpp-workers AT delorie DOT com X-Unsubscribes-To: listserv AT delorie DOT com Precedence: bulk > > We could add a sbrk(0) call before calling sbrk() with the expected > > size - and if it's aligned the sbrk() value should be also. If > > sbrk(0) not aligned, we sbrk() the small number of bytes to align - > > which will always work (unless there's a equality bug right at the > > boundary in sbrk...) Eli replied: > I like this idea better: it will probably lead to a simpler and more > localized implementation. Actually a one line implementation (vs 2.03). Worked on simple case of some user sbrk()s tossed in. And we get to actually use brk() - which I don't think we've used before :-) Could also do with sbrk() but would require an if statement. *** malloc.c_ Wed Dec 5 14:52:52 2001 --- malloc.c Tue Feb 12 10:52:20 2002 *************** malloc(size_t size) *** 192,195 **** --- 192,196 ---- } + brk((void *)( ((int)sbrk(0)+(ALIGN-1)) & ~(ALIGN-1) )); /* Align next sbrk */ chunk_size = size+16; /* two ends plus two placeholders */ rv = (BLOCK *)sbrk(chunk_size);