From cc13543e84480b8361da607ba9b859c9bd2f42d5 Mon Sep 17 00:00:00 2001 From: Kenichi Handa Date: Tue, 16 Jun 2009 02:04:25 +0000 Subject: [PATCH] (detect_coding_utf_16): Fix previous change. --- src/ChangeLog | 5 +++++ src/coding.c | 16 ++++++++-------- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index bc4ce2aa0a..6a6e90aafb 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 8d90297db0..cde56d9af4 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; } -- 2.20.1