From: Kenichi Handa Date: Tue, 16 Jun 2009 02:04:25 +0000 (+0000) Subject: (detect_coding_utf_16): Fix previous change. X-Git-Tag: emacs-pretest-23.0.95~41 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=cc13543e84480b8361da607ba9b859c9bd2f42d5;p=emacs.git (detect_coding_utf_16): Fix previous change. --- diff --git a/src/ChangeLog b/src/ChangeLog index bc4ce2aa0af..6a6e90aafb9 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +2009-06-16 Kenichi Handa + + * 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 * coding.c (detect_coding_utf_16): Fix typo counting odd bytes. diff --git a/src/coding.c b/src/coding.c index 8d90297db0f..cde56d9af42 100644 --- a/src/coding.c +++ b/src/coding.c @@ -1665,10 +1665,11 @@ detect_coding_utf_16 (coding, detect_info) 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) @@ -1677,18 +1678,17 @@ detect_coding_utf_16 (coding, detect_info) { 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; }