delorie.com/archives/browse.cgi | search |
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: | <Pine.SUN.3.91.1020212102845.4485C-100000@is> from "Eli Zaretskii" at Feb 12, 2002 10:28:55 AM |
X-Mailer: | ELM [version 2.5 PL2] |
Mime-Version: | 1.0 |
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 |
> > 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);
webmaster | delorie software privacy |
Copyright © 2019 by DJ Delorie | Updated Jul 2019 |