From ce3ddd15d55dd68999fa4055f191712cedc8cfac Mon Sep 17 00:00:00 2001 From: redi Date: Mon, 22 Jun 2015 15:09:22 +0000 Subject: [PATCH] * include/bits/locale_conv.h (__do_str_codecvt): Handle empty range. (wstring_convert): Move into __cxx11 namespace. (wbuffer_convert(streambuf*, _Codecvt*, state_type)): Fix exception message. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@224737 138bc75d-0d04-0410-961f-82ee72b054a4 --- libstdc++-v3/ChangeLog | 5 +++++ libstdc++-v3/include/bits/locale_conv.h | 12 +++++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 290af6851ce..1e2fda0cf5a 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,5 +1,10 @@ 2015-06-22 Jonathan Wakely + * include/bits/locale_conv.h (__do_str_codecvt): Handle empty range. + (wstring_convert): Move into __cxx11 namespace. + (wbuffer_convert(streambuf*, _Codecvt*, state_type)): Fix exception + message. + PR libstdc++/64657 * include/bits/stl_uninitialized.h (__uninitialized_copy::__uninit_copy): Cast expression to void. diff --git a/libstdc++-v3/include/bits/locale_conv.h b/libstdc++-v3/include/bits/locale_conv.h index 61b535c57de..fd99499b8f6 100644 --- a/libstdc++-v3/include/bits/locale_conv.h +++ b/libstdc++-v3/include/bits/locale_conv.h @@ -58,6 +58,12 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION _OutStr& __outstr, const _Codecvt& __cvt, _State& __state, size_t& __count, _Fn __fn) { + if (__first == __last) + { + __outstr.clear(); + return true; + } + size_t __outchars = 0; auto __next = __first; const auto __maxlen = __cvt.max_length() + 1; @@ -150,6 +156,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION return __str_codecvt_out(__first, __last, __outstr, __cvt, __state, __n); } +_GLIBCXX_BEGIN_NAMESPACE_CXX11 + /// String conversions template, @@ -301,6 +309,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION bool _M_with_strings = false; }; +_GLIBCXX_END_NAMESPACE_CXX11 + /// Buffer conversions template> @@ -325,7 +335,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION : _M_buf(__bytebuf), _M_cvt(__pcvt), _M_state(__state) { if (!_M_cvt) - __throw_logic_error("wstring_convert"); + __throw_logic_error("wbuffer_convert"); _M_always_noconv = _M_cvt->always_noconv(); -- 2.11.4.GIT