This is the mail archive of the libstdc++@gcc.gnu.org mailing list for the libstdc++ project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
On Mon, 27 Jan 2014, Jonathan Wakely 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.
For comparison, libc++ has 2 paths. If pointer really is a pointer, it just returns it, no need to pay for a comparison in that case. And otherwise, it calls _M_start.operator-> and crosses its fingers. There is a helper function doing that used throughout the library.
-- Marc Glisse
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |