mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-14 05:20:25 +08:00
libstdc++: Fix unspecified comparison to null pointer [PR 97415]
The standard doesn't guarantee that null pointers compare less than non-null pointers. AddressSanitizer complains about the pptr()> egptr() comparison in basic_stringbuf::str() when egptr() is null. libstdc++-v3/ChangeLog: PR libstdc++/97415 * include/std/sstream (basic_stringbuf::str()): Check for null egptr() before comparing to non-null pptr().
This commit is contained in:
parent
5b00bcc543
commit
78198b6021
@ -178,13 +178,14 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
|
||||
str() const
|
||||
{
|
||||
__string_type __ret(_M_string.get_allocator());
|
||||
if (this->pptr())
|
||||
if (char_type* __pptr = this->pptr())
|
||||
{
|
||||
char_type* __egptr = this->egptr();
|
||||
// The current egptr() may not be the actual string end.
|
||||
if (this->pptr() > this->egptr())
|
||||
__ret.assign(this->pbase(), this->pptr());
|
||||
if (!__egptr || __pptr > __egptr)
|
||||
__ret.assign(this->pbase(), __pptr);
|
||||
else
|
||||
__ret.assign(this->pbase(), this->egptr());
|
||||
__ret.assign(this->pbase(), __egptr);
|
||||
}
|
||||
else
|
||||
__ret = _M_string;
|
||||
|
Loading…
x
Reference in New Issue
Block a user