From 3ab82a65d701db47cea2ccbe9e7821468e71dd90 Mon Sep 17 00:00:00 2001 From: naruse Date: Tue, 23 Nov 2010 18:23:03 +0000 Subject: * enc/trans/utf_16_32.trans: raise error on unpaired upper surrogates. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29891 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- enc/trans/utf_16_32.trans | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'enc') diff --git a/enc/trans/utf_16_32.trans b/enc/trans/utf_16_32.trans index 4b1eca796d..2d7005993e 100644 --- a/enc/trans/utf_16_32.trans +++ b/enc/trans/utf_16_32.trans @@ -289,20 +289,20 @@ fun_si_from_utf_16(void *statep, const unsigned char *s, size_t l) } break; case BE: - if (0xD8 <= s[0] && s[0] <= 0xDB) { - return (VALUE)from_UTF_16BE_D8toDB_00toFF; - } - else { + if (s[0] < 0xD8 && 0xDF < s[0]) { return (VALUE)FUNso; } + else if (s[0] <= 0xDB) { + return (VALUE)from_UTF_16BE_D8toDB_00toFF; + } break; case LE: - if (0xD8 <= s[1] && s[1] <= 0xDB) { - return (VALUE)from_UTF_16LE_00toFF_D8toDB; - } - else { + if (s[1] < 0xD8 && 0xDF < s[1]) { return (VALUE)FUNso; } + else if (s[1] <= 0xDB) { + return (VALUE)from_UTF_16LE_00toFF_D8toDB; + } break; } return (VALUE)INVALID; -- cgit v1.2.3