Description
Describe the bug
Currently, MSVC STL's basic_stringbuf
relies on that the eback()
pointer points to the beginning of the allocated buffer.
Lines 495 to 497 in e077eb6
Likewise, basic_syncbuf
requires pbase()
to behave the same way.
Line 247 in e077eb6
However, the pointers returned by these functions can be modified by users via setg
/setp
functions, which means these conditions can't be considered as invariants maintained by the implementation.
Command-line test case
STL/tests/libcxx/expected_results.txt
Lines 1103 to 1107 in e077eb6
Expected behavior
These tests pass.
STL version
(Probably in all versions where basic_stringbuf
or basic_syncbuf
is available.)
Additional context
Not sure whether this can be fixed without breaking ABI. #4239 may be related, but doesn't fix any part of this issue.