Source-Changes-D archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: CVS commit: src/common/lib/libc/string
On Tue, Apr 15, 2014 at 08:06:57AM +0200, Alan Barrett wrote:
> On Mon, 14 Apr 2014, Joerg Sonnenberger wrote:
> >Modified Files:
> > src/common/lib/libc/string: bcopy.c
> >
> >Log Message:
> >Using bcopy/memcpy with NULL arguments is valid as long as the size is
> >also 0.
>
> No, it's undefined behaviour. C99 section 7.21.1:
>
> Unless explicitly stated otherwise in the description of a
> particular function in this subclause, pointer arguments on
> such a call shall still have valid values, as described in
> 7.1.4.
>
> and 7.1.4 says:
>
> If an argument to a function has an invalid value (such as ...
> a null pointer ...) ..., the behavior is undefined.
>
> and 7.21.2.1 "The memcpy function" does not give any explicit
> permission for use of null pointers.
>
> I don't object if the implementation wants to allow null pointers
> with zero size as an extension, but it should be clear that this is
> non-standard.
I remember a discussion about this topic from the LLVM lists and the
reasons for the standard language on this are extremely weak. IIRC the
*only* justification was for some platforms with broken (trapping)
prefetch instructions.
Joerg
Home |
Main Index |
Thread Index |
Old Index