Date: Fri, 06 Jul 2001 12:56:55 +0300 From: "Eli Zaretskii" Sender: halo1 AT zahav DOT net DOT il To: djgpp-workers AT delorie DOT com Message-Id: <3791-Fri06Jul2001125654+0300-eliz@is.elta.co.il> X-Mailer: Emacs 20.6 (via feedmail 8.3.emacs20_6 I) and Blat ver 1.8.9 In-reply-to: (message from Eli Zaretskii on Wed, 4 Jul 2001 12:05:57 +0300 (IDT)) Subject: Re: malloc() problem, DJDEV 203 References: 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 > Date: Wed, 4 Jul 2001 12:05:57 +0300 (IDT) > From: Eli Zaretskii > > On Tue, 3 Jul 2001, I wrote: > > > If that doesn't work, I think we can safely decline anything above 2GB, > > which will avoid the signed/unsigned nuisance (inside malloc as well). > > Does the following look right? I committed this, after moving the test before the alignment, as per DJ's suggestion, and after adding a note in wc204.txi. > --- malloc.c~0 Wed Jul 4 09:55:04 2001 > +++ malloc.c Wed Jul 4 11:10:02 2001 > @@ -132,6 +132,16 @@ malloc(size_t size) > > if (size size = (size+(ALIGN-1))&~(ALIGN-1); > + > + /* Refuse ridiculously large requests right away. Anything beyond > + 2GB will be treated by sbrk as a negative request, i.e. as a > + request to _decrease_ the heap size. */ > + if (size > 0x7fffffff - 0x10000) /* sbrk rounds up to 64KB */ > + { > + if (__libc_malloc_fail_hook) > + __libc_malloc_fail_hook(size); > + return 0; > + } > #if DEBUG > printf("malloc(%u)\n", size); > #endif > >