summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Schwab <schwab@redhat.com>2011-06-28 03:15:30 -0400
committerAndreas Schwab <schwab@redhat.com>2011-06-28 13:30:52 +0200
commit96147940d8ffb63efdf84a7f2608eec742df8c61 (patch)
tree8fa1035370f130187eb208d4dd73b60a1476e750
parent5ec98a06e70c071cc38c45c80804df4afc7eff09 (diff)
Fix crash in GB18030 encoder
(cherry picked from commit a4172181585cec75422786d905c6e03ddfa7cd20)
-rw-r--r--ChangeLog5
-rw-r--r--iconvdata/gb18030.c12
2 files changed, 11 insertions, 6 deletions
diff --git a/ChangeLog b/ChangeLog
index c90463ec74..b27323cdb7 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2011-06-27 Andreas Schwab <schwab@redhat.com>
+
+ * iconvdata/gb18030.c (BODY for TO_LOOP): Fix encoding of non-BMP
+ two-byte characters.
+
2011-06-22 Andreas Schwab <schwab@redhat.com>
* sysdeps/posix/getaddrinfo.c (gaih_inet): Fix last change.
diff --git a/iconvdata/gb18030.c b/iconvdata/gb18030.c
index f2b23e66ea..a06b75d03b 100644
--- a/iconvdata/gb18030.c
+++ b/iconvdata/gb18030.c
@@ -18233,17 +18233,17 @@ static const unsigned char __ucs_to_gb18030_tab2[][2] =
len = 0; \
} \
else if (ch == 0x20087) \
- idx = 0xfe51; \
+ cp = (const unsigned char *) "\xfe\x51"; \
else if (ch == 0x20089) \
- idx = 0xfe52; \
+ cp = (const unsigned char *) "\xfe\x52"; \
else if (ch == 0x200CC) \
- idx = 0xfe53; \
+ cp = (const unsigned char *) "\xfe\x53"; \
else if (ch == 0x215d7) \
- idx = 0xfe6c; \
+ cp = (const unsigned char *) "\xfe\x6c"; \
else if (ch == 0x2298F) \
- idx = 0xfe76; \
+ cp = (const unsigned char *) "\xfe\x76"; \
else if (ch == 0x241FE) \
- idx = 0xfe91; \
+ cp = (const unsigned char *) "\xfe\x91"; \
else \
len = 0; \
\