]> granicus.if.org Git - php/commitdiff
- Fix bug #45239 (encoding detector hangs with mbstring.strict_detection
authorMoriyoshi Koizumi <moriyoshi@php.net>
Fri, 6 Feb 2009 07:32:44 +0000 (07:32 +0000)
committerMoriyoshi Koizumi <moriyoshi@php.net>
Fri, 6 Feb 2009 07:32:44 +0000 (07:32 +0000)
  enabled).

ext/mbstring/libmbfl/mbfl/mbfilter.c
ext/mbstring/tests/bug45239.phpt [new file with mode: 0644]

index 50a0853665a5f482a08959b80170f00ee71c3d60..a2c117d2a300dd36a5d2d9714d0af9afa2d0c75b 100644 (file)
@@ -462,10 +462,9 @@ enum mbfl_no_encoding mbfl_encoding_detector_judge(mbfl_encoding_detector *ident
                while (n >= 0) {
                        filter = identd->filter_list[n];
                        if (!filter->flag) {
-                               if (identd->strict && filter->status) {
-                                       continue;
+                               if (!identd->strict || !filter->status) {
+                                       encoding = filter->encoding->no_encoding;
                                }
-                               encoding = filter->encoding->no_encoding;
                        }
                        n--;
                }
diff --git a/ext/mbstring/tests/bug45239.phpt b/ext/mbstring/tests/bug45239.phpt
new file mode 100644 (file)
index 0000000..8d8ef48
--- /dev/null
@@ -0,0 +1,18 @@
+--TEST--
+Bug #45239 (encoding detector hangs with mbstring.strict_detection enabled)
+--INI--
+mbstring.strict_detection=1
+mbstring.http_input=UTF-8
+mbstring.internal_encoding=UTF-8
+--SKIPIF--
+<?php
+extension_loaded('mbstring') or die('skip');
+?>
+--FILE--
+<?php
+mb_internal_encoding("utf-8");
+mb_parse_str("a=%fc", $dummy);
+var_dump(mb_http_input());
+?>
+--EXPECT--
+string(5) "UTF-8"