Hello everyone,
Attached is a patch to fix bug 41698
(http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41698) and a second patch
with extends test suite coverage for it.
No unexpected failures on the g++ test suite.
libcpp/Changelog:
2013-07-13 Jared Parsons <jared...@gmail.com>
* charset.c: Fixed UTF-16 encoding of U+FFFF.
gcc/testsuite/Changelog:
2013-07-13 Jared Parsons <jared...@gmail.com>
* g++.dg/ext/utf16-1.C: Extended test case.
- Jared
--- libcpp/charset.c.old 2013-07-13 02:05:15.008064713 -0400
+++ libcpp/charset.c 2013-07-13 02:05:43.688066468 -0400
@@ -353,7 +353,7 @@ one_utf8_to_utf16 (iconv_t bigend, const
return EILSEQ;
}
- if (s < 0xFFFF)
+ if (s <= 0xFFFF)
{
if (*outbytesleftp < 2)
{
--- gcc/testsuite/g++.dg/ext/utf16-1.C.old 2013-07-13 16:56:08.500387672
-0400
+++ gcc/testsuite/g++.dg/ext/utf16-1.C 2013-07-13 16:58:06.633726139 -0400
@@ -19,11 +19,15 @@ const static char16_t c9 = L'a';
const static char16_t ca = L'\u2029';
const static char16_t cb = L'\u8010';
+const static char16_t cc = u'\uFFFF';
+
#define A 0x0061
#define D 0x0024
#define X 0x2029
#define Y 0x8010
+#define Z 0xFFFF
+
int main ()
{
if (sizeof (u'a') != sizeof (char16_t))
@@ -62,4 +66,7 @@ int main ()
abort ();
if (cb != Y)
abort ();
+
+ if (cc != Z)
+ abort();
}