From d1b5078579c5123746feaa2dabcd285aed3b27ab Mon Sep 17 00:00:00 2001 From: Marshall Clow Date: Tue, 16 Sep 2014 18:57:52 +0000 Subject: Fix a bug in the move-assigment operator for basic_stringbuf. Thanks to Johnathan Wakeley for the bug report llvm-svn: 217894 --- .../istringstream.assign/move.pass.cpp | 36 ++++++++++++++++++++++ 1 file changed, 36 insertions(+) (limited to 'libcxx/test/input.output/string.streams/istringstream/istringstream.assign/move.pass.cpp') diff --git a/libcxx/test/input.output/string.streams/istringstream/istringstream.assign/move.pass.cpp b/libcxx/test/input.output/string.streams/istringstream/istringstream.assign/move.pass.cpp index 6e20640c977..a3e869de2d9 100644 --- a/libcxx/test/input.output/string.streams/istringstream/istringstream.assign/move.pass.cpp +++ b/libcxx/test/input.output/string.streams/istringstream/istringstream.assign/move.pass.cpp @@ -33,6 +33,24 @@ int main() ss >> i; assert(i == 456); } + { + std::istringstream s1("Aaaaa Bbbbb Cccccccccc Dddddddddddddddddd"); + std::string s; + s1 >> s; + + std::istringstream s2 = std::move(s1); + s2 >> s; + assert(s == "Bbbbb"); + + std::istringstream s3; + s3 = std::move(s2); + s3 >> s; + assert(s == "Cccccccccc"); + + s1 = std::move(s3); + s1 >> s; + assert(s == "Dddddddddddddddddd"); + } { std::wistringstream ss0(L" 123 456"); std::wistringstream ss; @@ -46,5 +64,23 @@ int main() ss >> i; assert(i == 456); } + { + std::wistringstream s1(L"Aaaaa Bbbbb Cccccccccc Dddddddddddddddddd"); + std::wstring s; + s1 >> s; + + std::wistringstream s2 = std::move(s1); + s2 >> s; + assert(s == L"Bbbbb"); + + std::wistringstream s3; + s3 = std::move(s2); + s3 >> s; + assert(s == L"Cccccccccc"); + + s1 = std::move(s3); + s1 >> s; + assert(s == L"Dddddddddddddddddd"); + } #endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES } -- cgit v1.2.3