summaryrefslogtreecommitdiff
path: root/enc/trans
diff options
context:
space:
mode:
authornaruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-11-23 18:23:03 +0000
committernaruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-11-23 18:23:03 +0000
commit3ab82a65d701db47cea2ccbe9e7821468e71dd90 (patch)
tree68db643ca6085ee513b6e6396a659c66c3353d88 /enc/trans
parent952006388f528513c43eb105857fda761d5a9273 (diff)
* 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
Diffstat (limited to 'enc/trans')
-rw-r--r--enc/trans/utf_16_32.trans16
1 files changed, 8 insertions, 8 deletions
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;