Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 16 Oct 2001 14:06:09 +0100
From:      Nick Barnes <Nick.Barnes@pobox.com>
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:  <10872.1003237569@thrush.ravenbrook.com>
In-Reply-To: Message from Zero Sum <count@shalimar.net.au>  of "Tue, 16 Oct 2001 20:02:11 %2B1000." <200110161002.f9GA2CA08544@shalimar.net.au> 

next in thread | previous in thread | raw e-mail | index | archive | help
At 2001-10-16 10:02:11+0000, Zero Sum writes:
> 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.
> 
> Has this changed without me noticing?

It was never generally true.  Your memory may have its roots in the
fact that some operating systems on some machines in the early 80s
(VMS on VAXen, ISTR) wired page zero to be zero on read, discard on
write, so that you could read from a NULL pointer (which was address
zero in that -- and most -- implementations of C) and get zero bytes.
On such a machine you could indeed pass NULL to a function that was
expecting a string and get the same behaviour as passing a pointer to
an empty string.

This kind of hack saves a few lines of source code, a few bytes of
object code, and a few CPU cycles.  The cost in terms of portability
and maintainability is immense.  Nobody does it any more.

This should go to -chat.

Nick Barnes
Ravenbrook Limited

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?10872.1003237569>