diff options
| author | Masaki Fujimoto <fujimoto@php.net> | 2005-04-22 05:03:10 +0000 |
|---|---|---|
| committer | Masaki Fujimoto <fujimoto@php.net> | 2005-04-22 05:03:10 +0000 |
| commit | ca7a6493006c848779a0354d56ac1950d6a1f6e8 (patch) | |
| tree | 09898228e7396b7d36ffe3db73238b2aa283306a /ext | |
| parent | 7dd430ff2835ff5b0a3d84953c88764ffd8acaa7 (diff) | |
| download | php-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.c | 22 |
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) { |
