[BUG] wprintf(L"%s", str) expects str to be wide

Eric Blake eblake@redhat.com
Fri Jan 11 18:02:00 GMT 2013


On 01/11/2013 10:44 AM, Eric Blake wrote:
> On 01/11/2013 10:02 AM, Craig Howland wrote:
> 
>>      Looks good.  (Good catch on the case 'x', too.)  One very minor
>> thing, to be very gung-ho, should you care to bother:
>>
>> insize = p ? p - arg : prec;    // works
>>
>> insize = (p!=NULL) ? p - arg : prec;    // cleaner
> 
> Pointless waste of typing.
> 
>>
>> (There's tons of the former, of course, and realistically NULL will
>> never be other than 0.)
> 
> Even if NULL is not 0 (which the C standard does allow, after all),

More precisely, NULL (the preprocessor macro) is required by C to be a
constant that evaluates to 0 (and POSIX goes one step further by
requiring that it also have a type of void*), independently of whether
the hardware implementation of a null pointer (the special value
reserved for a pointer that cannot be dereferenced) is the all-0-bit
pattern (most common) or some other pattern.  And compilers are required
to compile code involving null pointers (whether via NULL, via a
constant 0 in the code, or by "zero-initialization" of a struct) to the
actual hardware null pointer value (even in the unlikely case that the
hardware value is not all 0 bits).  Likewise, compilers are required to
compile the conversion of any pointer value to a boolean context by
comparing whether the pointer is a null pointer (whether or not that is
all 0 bits).

But my conclusion remains:

> you are not buying any robustness by adding an explicit
> comparison to NULL.
> 

Only the Java language requires an explicit comparison against null
before converting an object (which is implicitly a pointer) to a boolean
context.

-- 
Eric Blake   eblake redhat com    +1-919-301-3266
Libvirt virtualization library http://libvirt.org

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 619 bytes
Desc: OpenPGP digital signature
URL: <http://sourceware.org/pipermail/newlib/attachments/20130111/a67ea413/attachment.sig>


More information about the Newlib mailing list