[libcxx] Fix a bug in strstreambuf::overflow.
The end pointer should point to one past the end of the newly allocated buffer. rdar://problem/24265174 Differential Revision: http://reviews.llvm.org/D20334 git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@274132 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -175,7 +175,6 @@ strstreambuf::overflow(int_type __c)
|
||||
ptrdiff_t ninp = gptr() - eback();
|
||||
ptrdiff_t einp = egptr() - eback();
|
||||
ptrdiff_t nout = pptr() - pbase();
|
||||
ptrdiff_t eout = epptr() - pbase();
|
||||
if (__strmode_ & __allocated)
|
||||
{
|
||||
if (__pfree_)
|
||||
@@ -184,7 +183,7 @@ strstreambuf::overflow(int_type __c)
|
||||
delete [] eback();
|
||||
}
|
||||
setg(buf, buf + ninp, buf + einp);
|
||||
setp(buf + einp, buf + einp + eout);
|
||||
setp(buf + einp, buf + new_size);
|
||||
pbump(static_cast<int>(nout));
|
||||
__strmode_ |= __allocated;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user