From: Florian Weimer Date: Tue, 29 Nov 2016 17:35:12 +0000 (+0100) Subject: gconv: Adjust GBK to support the Euro sign X-Git-Tag: upstream/2.30~4018 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=0415d32187731ac03ef6c72c6cfb25314d4b0133;p=platform%2Fupstream%2Fglibc.git gconv: Adjust GBK to support the Euro sign Commit aa4d00ca39e604ac4e9fead401ccd4483e11a281 only updated the data used by locales. --- diff --git a/ChangeLog b/ChangeLog index 92c96c1..1ae7181 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2016-11-29 Florian Weimer + + * iconvdata/gbk.c (BODY): Add Euro sign support (both directions). + 2016-11-29 Yury Norov Steve Ellcey diff --git a/iconvdata/gbk.c b/iconvdata/gbk.c index fc32a50..8e12e95 100644 --- a/iconvdata/gbk.c +++ b/iconvdata/gbk.c @@ -13148,8 +13148,17 @@ static const char __gbk_from_ucs4_tab12[][2] = if (__builtin_expect (ch <= 0x80, 0) \ || __builtin_expect (ch > 0xfe, 0)) \ { \ - /* This is illegal. */ \ - STANDARD_FROM_LOOP_ERR_HANDLER (1); \ + if (__glibc_likely (ch == 0x80)) \ + { \ + /* Exception for the Euro sign (see CP936). */ \ + ch = 0x20ac; \ + ++inptr; \ + } \ + else \ + { \ + /* This is illegal. */ \ + STANDARD_FROM_LOOP_ERR_HANDLER (1); \ + } \ } \ else \ { \ @@ -13292,6 +13301,10 @@ static const char __gbk_from_ucs4_tab12[][2] = case 0x2010 ... 0x203b: \ cp = __gbk_from_ucs4_tab4[ch - 0x2010]; \ break; \ + case 0x20ac: \ + /* Exception for the Euro sign (see CP396). */ \ + cp = "\x80"; \ + break; \ case 0x2103 ... 0x22bf: \ cp = __gbk_from_ucs4_tab5[ch - 0x2103]; \ break; \