Mail Archives: djgpp-workers/2001/07/06/05:59:58
> Date: Wed, 4 Jul 2001 12:05:57 +0300 (IDT)
> From: Eli Zaretskii <eliz AT is DOT elta DOT co DOT il>
>
> 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<ALIGN) size = ALIGN;
> 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
>
>
- Raw text -