[patch] proposed fix for libstdc++/59829

Paolo Carlini paolo.carlini@oracle.com
Mon Jan 27 20:17:00 GMT 2014


> On 27/gen/2014, at 20:38, Jonathan Wakely <jwakely@redhat.com> wrote:
> This is the best I've come up with to avoid dereferencing an invalid
> pointer when calling vector::data() on an empty vector.
> For C++03 we reurn the vector's pointer type, so can just return the
> internal pointer, but for C++11 we need to convert that to a raw
> pointer, which we do by dereferencing, so we must check if it's valid
> first.
> Any better suggestions before I commit this?

I'm going to say something quite obvious - in principle the C++11 version could become identical at compile time to the simpler C++03 version depending on the types. Not sure if it's worth it, avoiding the conditional operator at run-time... Maybe libc++ does something similar, if I remember correctly Howard's distaste for branches ;)


More information about the Gcc-patches mailing list