From: Masaki Fujimoto Date: Fri, 22 Apr 2005 05:03:25 +0000 (+0000) Subject: - MFH: Fix mbfl_encoding_detector_feed() and mbfl_mbfl_identify_encoding() behaviour X-Git-Tag: php-5.0.5RC1~393 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=6d58950fe66b09c2a1eaf534f86c9089a9dbb407;p=php - MFH: Fix mbfl_encoding_detector_feed() and mbfl_mbfl_identify_encoding() behaviour --- diff --git a/ext/mbstring/libmbfl/mbfl/mbfilter.c b/ext/mbstring/libmbfl/mbfl/mbfilter.c index c6bc2e4348..b99d8df8a2 100644 --- a/ext/mbstring/libmbfl/mbfl/mbfilter.c +++ b/ext/mbstring/libmbfl/mbfl/mbfilter.c @@ -405,16 +405,16 @@ mbfl_encoding_detector_feed(mbfl_encoding_detector *identd, mbfl_string *string) num = identd->filter_list_size; n = string->len; p = string->val; + bad = 0; while (n > 0) { - i = 0; - bad = 0; - while (i < num) { + for (i = 0; i < num; i++) { filter = identd->filter_list[i]; - (*filter->filter_function)(*p, filter); - if (filter->flag) { - bad++; + if (!filter->flag) { + (*filter->filter_function)(*p, filter); + if (filter->flag) { + bad++; + } } - i++; } if ((num - 1) <= bad) { res = 1; @@ -555,9 +555,11 @@ mbfl_identify_encoding(mbfl_string *string, enum mbfl_no_encoding *elist, int el while (n > 0) { for (i = 0; i < num; i++) { filter = &flist[i]; - (*filter->filter_function)(*p, filter); - if (filter->flag) { - bad++; + if (!filter->flag) { + (*filter->filter_function)(*p, filter); + if (filter->flag) { + bad++; + } } } if ((num - 1) <= bad && !strict) { @@ -571,7 +573,7 @@ mbfl_identify_encoding(mbfl_string *string, enum mbfl_no_encoding *elist, int el /* judge */ encoding = NULL; - for (i = num; --i >= 0;) { + for (i = 0; i < num; i++) { filter = &flist[i]; if (!filter->flag) { encoding = filter->encoding;