summaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
authorMasaki Fujimoto <fujimoto@php.net>2005-04-22 05:03:10 +0000
committerMasaki Fujimoto <fujimoto@php.net>2005-04-22 05:03:10 +0000
commitca7a6493006c848779a0354d56ac1950d6a1f6e8 (patch)
tree09898228e7396b7d36ffe3db73238b2aa283306a /ext
parent7dd430ff2835ff5b0a3d84953c88764ffd8acaa7 (diff)
downloadphp-git-ca7a6493006c848779a0354d56ac1950d6a1f6e8.tar.gz
- Fix mbfl_encoding_detector_feed() and mbfl_mbfl_identify_encoding() behaviour
Diffstat (limited to 'ext')
-rw-r--r--ext/mbstring/libmbfl/mbfl/mbfilter.c22
1 files changed, 12 insertions, 10 deletions
diff --git a/ext/mbstring/libmbfl/mbfl/mbfilter.c b/ext/mbstring/libmbfl/mbfl/mbfilter.c
index ee1762e38e..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) {