re PR libstdc++/64797 (22_locale/conversions/string/2.cc FAILs)
authorJonathan Wakely <jwakely@redhat.com>
Wed, 4 Mar 2015 17:19:55 +0000 (17:19 +0000)
committerJonathan Wakely <redi@gcc.gnu.org>
Wed, 4 Mar 2015 17:19:55 +0000 (17:19 +0000)
commitb6584a72ac8d305731e1771a05c117dc11a3d553
tree51d24fd829c29cb8633b241a2c12b9fdd9596f15
parentd50a26f2bad59ba73c52694190aac02e90423bbd
re PR libstdc++/64797 (22_locale/conversions/string/2.cc FAILs)

PR libstdc++/64797
* include/bits/locale_conv.h (wstring_convert::_M_conv): Handle
incomplete multibyte sequences correctly.
* include/std/codecvt (codecvt_utf8, codecvt_utf16,
codecvt_utf8_utf16): Limit _Maxcode to maximum Unicode code point.
* src/c++11/codecvt.cc (invalid_mb_sequence, incomplete_mb_character):
Define constants.
(is_high_surrogate, is_low_surrogate, surrogate_pair_to_code_point):
Define convenience functions.
(read_utf8_code_point): Return relevant constant to distinguish
incomplete characters from invalid sequences.
(read_utf16_code_point): Likewise. Check for invalid sequences.
(ucs4_in, utf16_in): Use incomplete_mb_character constant.
(utf16_out): Check for invalid sequences.
(utf16_span): Fix condition.
(ucs2_out): Use is_high_surrogate.
(ucs2_in): Use incomplete_mb_character constant and fix condition.
* testsuite/22_locale/codecvt/char16_t.cc: Fix whitespace.
* testsuite/22_locale/conversions/buffer/1.cc: New.
* testsuite/22_locale/conversions/string/2.cc: Use char16_t and
char32_t instead of wchar_t.
* testsuite/22_locale/conversions/string/3.cc: New.

From-SVN: r221189
libstdc++-v3/ChangeLog
libstdc++-v3/include/bits/locale_conv.h
libstdc++-v3/include/std/codecvt
libstdc++-v3/src/c++11/codecvt.cc
libstdc++-v3/testsuite/22_locale/codecvt/char16_t.cc
libstdc++-v3/testsuite/22_locale/conversions/buffer/1.cc [new file with mode: 0644]
libstdc++-v3/testsuite/22_locale/conversions/string/2.cc
libstdc++-v3/testsuite/22_locale/conversions/string/3.cc [new file with mode: 0644]