From owner-freebsd-current Sat Nov 23 3:25: 7 2002 Delivered-To: freebsd-current@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 9AF6337B404 for ; Sat, 23 Nov 2002 03:25:06 -0800 (PST) Received: from HAL9000.homeunix.com (12-232-220-15.client.attbi.com [12.232.220.15]) by mx1.FreeBSD.org (Postfix) with ESMTP id AC62E43EA9 for ; Sat, 23 Nov 2002 03:25:05 -0800 (PST) (envelope-from dschultz@uclink.Berkeley.EDU) Received: from HAL9000.homeunix.com (localhost [127.0.0.1]) by HAL9000.homeunix.com (8.12.6/8.12.5) with ESMTP id gANBP102000345; Sat, 23 Nov 2002 03:25:01 -0800 (PST) (envelope-from dschultz@uclink.Berkeley.EDU) Received: (from das@localhost) by HAL9000.homeunix.com (8.12.6/8.12.5/Submit) id gANBP1un000344; Sat, 23 Nov 2002 03:25:01 -0800 (PST) (envelope-from dschultz@uclink.Berkeley.EDU) Date: Sat, 23 Nov 2002 03:25:01 -0800 From: David Schultz To: Bruce Evans Cc: "M. Warner Losh" , marc@informatik.uni-bremen.de, freebsd-current@FreeBSD.ORG Subject: Re: malloc(0) broken? Message-ID: <20021123112501.GA302@HAL9000.homeunix.com> Mail-Followup-To: Bruce Evans , "M. Warner Losh" , marc@informatik.uni-bremen.de, freebsd-current@FreeBSD.ORG References: <20021123104135.GA13619@HAL9000.homeunix.com> <20021123221927.I49462-100000@gamplex.bde.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20021123221927.I49462-100000@gamplex.bde.org> Sender: owner-freebsd-current@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.ORG Thus spake Bruce Evans : > On Sat, 23 Nov 2002, David Schultz wrote: > > > Thus spake Bruce Evans : > > > ... 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.) Aah, what I ``seemed to recall'' is actually the behavior in -CURRENT, and what I described applies to 3.X and 4.X. Thanks for the clarification. To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message