Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 17 Oct 2001 13:40:13 +1000
From:      Greg Black <gjb@gbch.net>
To:        nate@yogotech.com (Nate Williams)
Cc:        Zero Sum <count@shalimar.net.au>, 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:  <nospam-1003290013.25209@mx1.gbch.net>
In-Reply-To: <15308.25432.608079.646993@nomad.yogotech.com>  of Tue, 16 Oct 2001 10:42:00 CST
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> <15308.25432.608079.646993@nomad.yogotech.com> 

next in thread | previous in thread | raw e-mail | index | archive | help
Nate Williams 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.
| 
| As others have pointed out, this was never the case.
| 
| Here's a great example of why they aren't the same thing.
| 
| printf("%s", "");
| printf("%s", NULL);
| 
| The first will work, the second will dump core.  The second has never
| worked, and should never work.

Well, it has often "worked"; but it has always been wrong.  The
world would have been better off if people had not fudged things
in past operating systems to make this incorrect code appear to
work.

And I think that all those printf() library functions that print
"(null)" instead of allowing a core dump are doing the wrong
thing too.  It's wrong, so don't do it.

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?nospam-1003290013.25209>