]> granicus.if.org Git - php/commitdiff
- MFH: Fix mbfl_encoding_detector_feed() and mbfl_mbfl_identify_encoding() behaviour
authorMasaki Fujimoto <fujimoto@php.net>
Fri, 22 Apr 2005 05:03:25 +0000 (05:03 +0000)
committerMasaki Fujimoto <fujimoto@php.net>
Fri, 22 Apr 2005 05:03:25 +0000 (05:03 +0000)
ext/mbstring/libmbfl/mbfl/mbfilter.c

index c6bc2e43488b5dbe1e9d31eae7cabf5ae73c802c..b99d8df8a2b5cf8d2023892a869e58142767775e 100644 (file)
@@ -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;