Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 16 Oct 2001 12:25:38 +0100
From:      David Malone <dwmalone@maths.tcd.ie>
To:        Zero Sum <count@shalimar.net.au>
Cc:        cjclark@alum.mit.edu, "Crist J. Clark" <cristjc@earthlink.net>, Heath Nielson <heath@cs.byu.edu>, Warner Losh <imp@harmony.village.org>, David Marker <marker_d@yahoo.com>, freebsd-stable@FreeBSD.ORG
Subject:   Re: setenv() cores with NULL value [was Re: Gdm proplem on 4.4]
Message-ID:  <20011016122538.A12171@walton.maths.tcd.ie>
In-Reply-To: <200110161002.f9GA2CA08544@shalimar.net.au>; from count@shalimar.net.au on Tue, Oct 16, 2001 at 08:02:11PM %2B1000
References:  <200110160353.f9G3rO728525@harmony.village.org> <Pine.LNX.4.33.0110152249220.8479-100000@organ.cs.byu.edu> <20011016013834.E293@blossom.cjclark.org> <200110161002.f9GA2CA08544@shalimar.net.au>

next in thread | previous in thread | raw e-mail | index | archive | help
On Tue, Oct 16, 2001 at 08:02:11PM +1000, Zero Sum wrote:
> On Tuesday 16 October 2001 18:38, Crist J. Clark wrote:
> 
> > > 
> > > setenv("TEST1", "", 1);
> > > setenv("TEST2", NULL, 1);
> > 
> > A huge difference. In the first case, the second argument is a
> > pointer aimed at a string which contains the bytes, '\0'. In the
> > second case, we have a null pointer. Null pointers point at nothing.
> 
> I had that out with a compiler manufacturer long, long ago.  At that 
> time it was a requirement for a 'correct' C compiler to regard a null 
> pointer and a pointer to a null string as sematically equivalent.

Can you point to any document that refers to this? Maybe the compiler
manufacturer was having you on.

The C99 standard doesn't seem to mention "null string" as a term
anywhere (though it's a common usage for people studying grammers)
and "empty string" only crops up in relation to the nan function.
Scanning through and looking for null by itself doesn't mention
anything like this either.

Infact, C99 says:

	If an argment to a function has an invalid value (such as
	a value outside the domain of the function, or a pointer
	outside the address space of the program, or a null pointer,
	or a pointer to noon-modifiable storage when the corresponding
	parameter is not const-qualified), ..., the behaviour is
	undefined.

which seems to suggest that unless NULL is specifically mentioned
as beging acceptable then the compiler can do more-or-less as it
pleases. AFAIK setenv isn't part of any standard which is likely
to say that NULL is acceptable.

	David.

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




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