diff options
author | Joseph Myers <jsm28@gcc.gnu.org> | 2014-11-29 01:56:06 +0000 |
---|---|---|
committer | Joseph Myers <jsm28@gcc.gnu.org> | 2014-11-29 01:56:06 +0000 |
commit | 81fee4a708e49a075602b0b4f89793ad9ed22f01 (patch) | |
tree | f7a6e9485e2f70feb13e54ed3074413bd5504a92 /gcc | |
parent | bfa52c5720829e6eb6f5d4e9f8889e0154e48c13 (diff) | |
download | gcc-81fee4a708e49a075602b0b4f89793ad9ed22f01.zip gcc-81fee4a708e49a075602b0b4f89793ad9ed22f01.tar.gz gcc-81fee4a708e49a075602b0b4f89793ad9ed22f01.tar.bz2 |
Fix off-by-one bug in utf16 conversion (PR preprocessor/41698).
libcpp:
2014-11-29 John Schmerge <jbschmerge@gmail.com>
PR preprocessor/41698
* charset.c (one_utf8_to_utf16): Do not produce surrogate pairs
for 0xffff.
gcc/testsuite:
2014-11-29 Joseph Myers <joseph@codesourcery.com>
PR preprocessor/41698
* gcc/testsuite/g++.dg/cpp/utf16-pr41698-1.C: New test.
From-SVN: r218179
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp/utf16-pr41698-1.C | 15 |
2 files changed, 20 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 31bcf5c..888c596 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2014-11-29 Joseph Myers <joseph@codesourcery.com> + + PR preprocessor/41698 + * gcc/testsuite/g++.dg/cpp/utf16-pr41698-1.C: New test. + 2014-11-28 Vladimir Makarov <vmakarov@redhat.com> PR target/64061 diff --git a/gcc/testsuite/g++.dg/cpp/utf16-pr41698-1.C b/gcc/testsuite/g++.dg/cpp/utf16-pr41698-1.C new file mode 100644 index 0000000..e60f25b --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp/utf16-pr41698-1.C @@ -0,0 +1,15 @@ +// PR 41698: off-by-one error in UTF-16 encoding. + +// { dg-do run { target c++11 } } + +extern "C" void abort (void); +extern "C" void exit (int); + +int +main () +{ + char16_t s[] = u"\uffff"; + if (sizeof s != 2 * sizeof (char16_t) || s[0] != 0xffff || s[1] != 0) + abort (); + exit (0); +} |