Fix typo in std::wbuffer_convert
* include/bits/locale_conv.h (wbuffer_convert::_M_conv_get): Fix typo. * testsuite/22_locale/conversions/buffer/3.cc: New test. From-SVN: r254735
This commit is contained in:
parent
17636f2662
commit
d2e9196e5f
3 changed files with 64 additions and 1 deletions
|
@ -1,3 +1,8 @@
|
|||
2017-11-14 Jonathan Wakely <jwakely@redhat.com>
|
||||
|
||||
* include/bits/locale_conv.h (wbuffer_convert::_M_conv_get): Fix typo.
|
||||
* testsuite/22_locale/conversions/buffer/3.cc: New test.
|
||||
|
||||
2017-11-10 Jonathan Wakely <jwakely@redhat.com>
|
||||
|
||||
* testsuite/util/testsuite_tr1.h (ThrowMoveConsClass): Use noexcept.
|
||||
|
|
|
@ -431,7 +431,7 @@ _GLIBCXX_END_NAMESPACE_CXX11
|
|||
streamsize __nbytes = sizeof(_M_get_buf) - _M_unconv;
|
||||
__nbytes = std::min(__nbytes, _M_buf->in_avail());
|
||||
if (__nbytes < 1)
|
||||
__nbytes == 1;
|
||||
__nbytes = 1;
|
||||
__nbytes = _M_buf->sgetn(_M_get_buf + _M_unconv, __nbytes);
|
||||
if (__nbytes < 1)
|
||||
return false;
|
||||
|
|
58
libstdc++-v3/testsuite/22_locale/conversions/buffer/3.cc
Normal file
58
libstdc++-v3/testsuite/22_locale/conversions/buffer/3.cc
Normal file
|
@ -0,0 +1,58 @@
|
|||
// 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 <streambuf>
|
||||
#include <testsuite_hooks.h>
|
||||
|
||||
struct streambuf : std::streambuf
|
||||
{
|
||||
int_type underflow() override
|
||||
{
|
||||
if (c != '\0')
|
||||
{
|
||||
this->setg(&c, &c, &c + 1);
|
||||
return *this->gptr();
|
||||
}
|
||||
c = '\0';
|
||||
return traits_type::eof();
|
||||
}
|
||||
|
||||
private:
|
||||
char c = 'a';
|
||||
};
|
||||
|
||||
struct codecvt : std::codecvt<wchar_t, char, std::mbstate_t> { };
|
||||
|
||||
void
|
||||
test01()
|
||||
{
|
||||
// https://gcc.gnu.org/ml/libstdc++/2017-11/msg00022.html
|
||||
streambuf sb;
|
||||
std::wbuffer_convert<codecvt> conv(&sb);
|
||||
VERIFY( sb.in_avail() == 0 );
|
||||
wchar_t c = conv.sgetc();
|
||||
VERIFY( c == L'a' );
|
||||
}
|
||||
|
||||
int
|
||||
main()
|
||||
{
|
||||
test01();
|
||||
}
|
Loading…
Add table
Reference in a new issue