From 81fee4a708e49a075602b0b4f89793ad9ed22f01 Mon Sep 17 00:00:00 2001 From: Joseph Myers Date: Sat, 29 Nov 2014 01:56:06 +0000 Subject: Fix off-by-one bug in utf16 conversion (PR preprocessor/41698). libcpp: 2014-11-29 John Schmerge PR preprocessor/41698 * charset.c (one_utf8_to_utf16): Do not produce surrogate pairs for 0xffff. gcc/testsuite: 2014-11-29 Joseph Myers PR preprocessor/41698 * gcc/testsuite/g++.dg/cpp/utf16-pr41698-1.C: New test. From-SVN: r218179 --- libcpp/ChangeLog | 6 ++++++ libcpp/charset.c | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) (limited to 'libcpp') diff --git a/libcpp/ChangeLog b/libcpp/ChangeLog index e04130a..f9a04f9 100644 --- a/libcpp/ChangeLog +++ b/libcpp/ChangeLog @@ -1,3 +1,9 @@ +2014-11-29 John Schmerge + + PR preprocessor/41698 + * charset.c (one_utf8_to_utf16): Do not produce surrogate pairs + for 0xffff. + 2014-11-25 Jakub Jelinek PR preprocessor/60436 diff --git a/libcpp/charset.c b/libcpp/charset.c index 1064f52..a34dafb 100644 --- a/libcpp/charset.c +++ b/libcpp/charset.c @@ -353,7 +353,7 @@ one_utf8_to_utf16 (iconv_t bigend, const uchar **inbufp, size_t *inbytesleftp, return EILSEQ; } - if (s < 0xFFFF) + if (s <= 0xFFFF) { if (*outbytesleftp < 2) { -- cgit v1.1