Commit bfe8a528 by Jonathan Wakely Committed by Jonathan Wakely

Fix std::wbuffer_convert::sync()

	* include/bits/locale_conv.h (wbuffer_convert::sync): Fix condition.
	* testsuite/22_locale/conversions/buffer/2.cc: New.

From-SVN: r249255
parent 01f1c24e
2017-06-16 Jonathan Wakely <jwakely@redhat.com> 2017-06-16 Jonathan Wakely <jwakely@redhat.com>
* include/bits/locale_conv.h (wbuffer_convert::sync): Fix condition.
* testsuite/22_locale/conversions/buffer/2.cc: New.
PR libstdc++/81092 PR libstdc++/81092
* acinclude.m4: Bump libtool_VERSION. * acinclude.m4: Bump libtool_VERSION.
* config/abi/post/i386-linux-gnu/baseline_symbols.txt: Update. * config/abi/post/i386-linux-gnu/baseline_symbols.txt: Update.
......
...@@ -375,7 +375,7 @@ _GLIBCXX_END_NAMESPACE_CXX11 ...@@ -375,7 +375,7 @@ _GLIBCXX_END_NAMESPACE_CXX11
protected: protected:
int int
sync() sync()
{ return _M_buf && _M_conv_put() && _M_buf->pubsync() ? 0 : -1; } { return _M_buf && _M_conv_put() && !_M_buf->pubsync() ? 0 : -1; }
typename _Wide_streambuf::int_type typename _Wide_streambuf::int_type
overflow(typename _Wide_streambuf::int_type __out) overflow(typename _Wide_streambuf::int_type __out)
......
// Copyright (C) 2017 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 3, or (at your option)
// any later version.
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING3. If not see
// <http://www.gnu.org/licenses/>.
// { dg-do run { target c++11 } }
#include <locale>
#include <sstream>
#include <testsuite_hooks.h>
void
test01()
{
struct Cvt : std::codecvt<char, char, std::mbstate_t> { };
std::stringstream ss;
std::wbuffer_convert<Cvt, char> cvt(ss.rdbuf());
auto p = ss.std::ios::rdbuf(&cvt);
ss << "hello";
VERIFY( ss.flush().good() );
ss.std::ios::rdbuf(p);
}
int main()
{
test01();
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment