Make seeking on an ostream that has eofbit set work correctly. Fixes PR#21361
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@240286 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -40,11 +40,13 @@ protected:
|
||||
int main()
|
||||
{
|
||||
{
|
||||
seekpos_called = 0;
|
||||
std::ostream os((std::streambuf*)0);
|
||||
assert(&os.seekp(5) == &os);
|
||||
assert(seekpos_called == 0);
|
||||
}
|
||||
{
|
||||
seekpos_called = 0;
|
||||
testbuf<char> sb;
|
||||
std::ostream os(&sb);
|
||||
assert(&os.seekp(10) == &os);
|
||||
@@ -54,4 +56,13 @@ int main()
|
||||
assert(seekpos_called == 2);
|
||||
assert(os.fail());
|
||||
}
|
||||
{ // See https://llvm.org/bugs/show_bug.cgi?id=21361
|
||||
seekpos_called = 0;
|
||||
testbuf<char> sb;
|
||||
std::ostream os(&sb);
|
||||
os.setstate(std::ios_base::eofbit);
|
||||
assert(&os.seekp(10) == &os);
|
||||
assert(seekpos_called == 1);
|
||||
assert(os.rdstate() == std::ios_base::eofbit);
|
||||
}
|
||||
}
|
||||
|
@@ -42,11 +42,13 @@ protected:
|
||||
int main()
|
||||
{
|
||||
{
|
||||
seekoff_called = 0;
|
||||
std::ostream os((std::streambuf*)0);
|
||||
assert(&os.seekp(5, std::ios_base::beg) == &os);
|
||||
assert(seekoff_called == 0);
|
||||
}
|
||||
{
|
||||
seekoff_called = 0;
|
||||
testbuf<char> sb;
|
||||
std::ostream os(&sb);
|
||||
assert(&os.seekp(10, std::ios_base::beg) == &os);
|
||||
@@ -56,4 +58,13 @@ int main()
|
||||
assert(seekoff_called == 2);
|
||||
assert(os.fail());
|
||||
}
|
||||
{ // See https://llvm.org/bugs/show_bug.cgi?id=21361
|
||||
seekoff_called = 0;
|
||||
testbuf<char> sb;
|
||||
std::ostream os(&sb);
|
||||
os.setstate(std::ios_base::eofbit);
|
||||
assert(&os.seekp(10, std::ios_base::beg) == &os);
|
||||
assert(seekoff_called == 1);
|
||||
assert(os.rdstate() == std::ios_base::eofbit);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user