aboutsummaryrefslogtreecommitdiff
path: root/libcpp
diff options
context:
space:
mode:
authorjsm28 <jsm28@138bc75d-0d04-0410-961f-82ee72b054a4>2014-11-29 01:56:06 +0000
committerjsm28 <jsm28@138bc75d-0d04-0410-961f-82ee72b054a4>2014-11-29 01:56:06 +0000
commite6260d8928af77a2e003689db07d56aaad008b0b (patch)
treef7a6e9485e2f70feb13e54ed3074413bd5504a92 /libcpp
parent5c646b1e993d280aa5f99c17626e46daa4cf64fb (diff)
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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@218179 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libcpp')
-rw-r--r--libcpp/ChangeLog6
-rw-r--r--libcpp/charset.c2
2 files changed, 7 insertions, 1 deletions
diff --git a/libcpp/ChangeLog b/libcpp/ChangeLog
index e04130a8df7..f9a04f9376e 100644
--- a/libcpp/ChangeLog
+++ b/libcpp/ChangeLog
@@ -1,3 +1,9 @@
+2014-11-29 John Schmerge <jbschmerge@gmail.com>
+
+ PR preprocessor/41698
+ * charset.c (one_utf8_to_utf16): Do not produce surrogate pairs
+ for 0xffff.
+
2014-11-25 Jakub Jelinek <jakub@redhat.com>
PR preprocessor/60436
diff --git a/libcpp/charset.c b/libcpp/charset.c
index 1064f527633..a34dafbb194 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)
{