+2009-06-16 Kenichi Handa <handa@m17n.org>
+
+ * coding.c (detect_coding_utf_16): Fix the logic of rejecting
+ UTF-16 by checking the dispersion of Eth and Oth bytes.
+
2009-06-15 Andreas Schwab <schwab@linux-m68k.org>
* coding.c (detect_coding_utf_16): Fix typo counting odd bytes.
e[c1] = 1;
o[c2] = 1;
- detect_info->rejected
- |= (CATEGORY_MASK_UTF_16_BE | CATEGORY_MASK_UTF_16_LE);
+ detect_info->rejected |= (CATEGORY_MASK_UTF_16_AUTO
+ |CATEGORY_MASK_UTF_16_BE
+ | CATEGORY_MASK_UTF_16_LE);
- while (1)
+ while (detect_info->rejected != CATEGORY_MASK_UTF_16)
{
TWO_MORE_BYTES (c1, c2);
if (c2 < 0)
{
e[c1] = 1;
e_num++;
- if (e_num >= 128 && o_num >= 128)
- break;
+ if (e_num >= 128)
+ detect_info->rejected |= CATEGORY_MASK_UTF_16_BE_NOSIG;
}
if (! o[c2])
{
o[c2] = 1;
o_num++;
- if (e_num >= 128 && o_num >= 128)
- break;
+ if (o_num >= 128)
+ detect_info->rejected |= CATEGORY_MASK_UTF_16_LE_NOSIG;
}
}
- detect_info->rejected |= CATEGORY_MASK_UTF_16;
return 0;
}