PHP 4.3.11 の mb_detect_encoding() がバグっている件

  結構前の話だけど,忘れてしまいそうなので.

- 概要
  PHP 4.3.10 から 4.3.11 へバージョンアップした際,
  mb_convert_encoding() の戻り値を mb_detect_encoding() に渡した場合の結果がおかしい.

- 対策
  以下のパッチを当てる.

Index: ext/mbstring/libmbfl/mbfl/mbfilter.c
===================================================================
RCS file: /repository/php-src/ext/mbstring/libmbfl/mbfl/mbfilter.c,v
retrieving revision 1.1.2.6
diff -u -r1.1.2.6 mbfilter.c
--- ext/mbstring/libmbfl/mbfl/mbfilter.c    13 Apr 2005 08:08:28 -0000    1.1.2.6
+++ ext/mbstring/libmbfl/mbfl/mbfilter.c    14 Apr 2005 14:04:11 -0000
@@ -555,9 +555,11 @@
        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) {


  http://ns1.php.gr.jp/pipermail/php-users/2005-April/025840.html

  http://ns1.php.gr.jp/pipermail/php-users/2005-April/025880.html