>Date: Wed, 25 Jun 2008 16:15:58 +0100 >From: Darren J Moffat <Darren.Moffat at sun.com> ... ... ... > >Basically I see the current behaviour as a long standing regression from >SunOS 4.x and was really tempted to not even file an ARC case but just >do a bug fix. Lets not over design this or beat it to death in ARC >unless there is a standards reason our sound architectural reason why >this is the wrong thing do to (and given the behaviour of all the other >platforms I'd have a hard time believing that).
There is no standards reason for changing the behavior or leaving it as is. The standards all say that passing a null pointer to a *printf() function for a format specifier that expects a pointer to a string produces undefined results. I don't know whether you consider it to be a sound architectural reason or not, but there was a conscious design decision made when Sun negotiated SunOS 5.0 behavior with AT&T not to check for bad code that used NULL as a pointer to a string. When libc converts NULL to "", to "(null)", or some other arbitrary string instead of dropping core when trying to dereference the bad pointer, it slows down all applications that use correct pointers, it delays debugging efforts, and it makes it more likely that a bad pointer will cause something downstream to corrupt other data. - Don
