Various minor formatting tweaks, de-indentation, &c. to Utf8ToOneUcs4Char. No change to actual logic in the code. r=sparky

--HG--
extra : rebase_source : f414988004996f16fd01b82263668a8befb727b2
This commit is contained in:
Jeff Walden 2011-07-15 15:41:47 -07:00
Родитель afc3d711b1
Коммит 58ba740f31
1 изменённых файлов: 20 добавлений и 23 удалений

Просмотреть файл

@ -5601,32 +5601,29 @@ js_OneUcs4ToUtf8Char(uint8 *utf8Buffer, uint32 ucs4Char)
static uint32
Utf8ToOneUcs4Char(const uint8 *utf8Buffer, int utf8Length)
{
uint32 ucs4Char;
uint32 minucs4Char;
/* from Unicode 3.1, non-shortest form is illegal */
static const uint32 minucs4Table[] = {
0x00000080, 0x00000800, 0x00010000
};
JS_ASSERT(1 <= utf8Length && utf8Length <= 4);
JS_ASSERT(utf8Length >= 1 && utf8Length <= 4);
if (utf8Length == 1) {
ucs4Char = *utf8Buffer;
JS_ASSERT(!(ucs4Char & 0x80));
} else {
JS_ASSERT((*utf8Buffer & (0x100 - (1 << (7-utf8Length)))) ==
(0x100 - (1 << (8-utf8Length))));
ucs4Char = *utf8Buffer++ & ((1<<(7-utf8Length))-1);
minucs4Char = minucs4Table[utf8Length-2];
while (--utf8Length) {
JS_ASSERT((*utf8Buffer & 0xC0) == 0x80);
ucs4Char = ucs4Char<<6 | (*utf8Buffer++ & 0x3F);
}
if (JS_UNLIKELY(ucs4Char < minucs4Char || (ucs4Char >= 0xD800 && ucs4Char <= 0xDFFF))) {
ucs4Char = INVALID_UTF8;
} else if (ucs4Char == 0xFFFE || ucs4Char == 0xFFFF) {
ucs4Char = 0xFFFD;
}
JS_ASSERT(!(*utf8Buffer & 0x80));
return *utf8Buffer;
}
/* from Unicode 3.1, non-shortest form is illegal */
static const uint32 minucs4Table[] = { 0x80, 0x800, 0x10000 };
JS_ASSERT((*utf8Buffer & (0x100 - (1 << (7 - utf8Length)))) ==
(0x100 - (1 << (8 - utf8Length))));
uint32 ucs4Char = *utf8Buffer++ & ((1 << (7 - utf8Length)) - 1);
uint32 minucs4Char = minucs4Table[utf8Length - 2];
while (--utf8Length) {
JS_ASSERT((*utf8Buffer & 0xC0) == 0x80);
ucs4Char = (ucs4Char << 6) | (*utf8Buffer++ & 0x3F);
}
if (JS_UNLIKELY(ucs4Char < minucs4Char || (ucs4Char >= 0xD800 && ucs4Char <= 0xDFFF)))
ucs4Char = INVALID_UTF8;
else if (ucs4Char == 0xFFFE || ucs4Char == 0xFFFF)
ucs4Char = 0xFFFD;
return ucs4Char;
}