Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 23 Nov 2002 22:32:17 +1100 (EST)
From:      Bruce Evans <bde@zeta.org.au>
To:        David Schultz <dschultz@uclink.Berkeley.EDU>
Cc:        "M. Warner Losh" <imp@bsdimp.com>, <marc@informatik.uni-bremen.de>, <freebsd-current@FreeBSD.ORG>
Subject:   Re: malloc(0) broken?
Message-ID:  <20021123221927.I49462-100000@gamplex.bde.org>
In-Reply-To: <20021123104135.GA13619@HAL9000.homeunix.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sat, 23 Nov 2002, David Schultz wrote:

> Thus spake Bruce Evans <bde@zeta.org.au>:
> > ...  C90 has a bogus requirement that
> > the pointer for malloc(0) be "unique", whatever that means.  C99 only
> > requires that the objects pointed to by the results of malloc() be
> > disjoint, and this is satisfied by FreeBSD's behaviour of returning the
> > same magic pointer for each instance of malloc(0).
>
> In FreeBSD, malloc(0) returns a distinct pointer each time by
> making a 16-byte allocation.  I seem to recall that it may have
> returned a single magic pointer at one time, so what you say might
> have been correct some time ago.

Actually, it is correct now.  malloc(0) returns the constant invalid
pointer ZEROSIZEPTR (0x800 on i386's), but it returned a distinct pointer
before the ZEROSIZEPTR stuff was added in rev.1.60 of libc/stdlib/malloc.c.
(All this is without the malloc option V which causes malloc(0) to return
a null pointer.)

Bruce


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20021123221927.I49462-100000>