From: Moriyoshi Koizumi Date: Fri, 11 Sep 2009 21:26:18 +0000 (+0000) Subject: - Fix bug #49536 (mb_detect_encoding() returns incorrect results when strict_mode... X-Git-Tag: php-5.4.0alpha1~191^2~2663 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=afe681c301b75356b6bf766bee02973e8a14968a;p=php - Fix bug #49536 (mb_detect_encoding() returns incorrect results when strict_mode is turned on.) (patch by komura, thanks!) --- diff --git a/ext/mbstring/libmbfl/filters/mbfilter_utf8.c b/ext/mbstring/libmbfl/filters/mbfilter_utf8.c index 20ff983e11..c6777b29fd 100644 --- a/ext/mbstring/libmbfl/filters/mbfilter_utf8.c +++ b/ext/mbstring/libmbfl/filters/mbfilter_utf8.c @@ -220,7 +220,7 @@ static int mbfl_filt_ident_utf8(int c, mbfl_identify_filter *filter) if (c < 0x80) { if (c < 0) { filter->flag = 1; /* bad */ - } else if (c != 0 && filter->status) { + } else if (filter->status) { filter->flag = 1; /* bad */ } filter->status = 0; diff --git a/ext/mbstring/libmbfl/mbfl/mbfilter.c b/ext/mbstring/libmbfl/mbfl/mbfilter.c index 1aeb38cc9b..4997c5a886 100644 --- a/ext/mbstring/libmbfl/mbfl/mbfilter.c +++ b/ext/mbstring/libmbfl/mbfl/mbfilter.c @@ -622,7 +622,7 @@ mbfl_identify_encoding(mbfl_string *string, enum mbfl_no_encoding *elist, int el if (!encoding) { for (i = 0; i < num; i++) { filter = &flist[i]; - if (!filter->flag) { + if (!filter->flag && (!strict || !filter->status)) { encoding = filter->encoding; break; } diff --git a/ext/mbstring/tests/bug49536.phpt b/ext/mbstring/tests/bug49536.phpt new file mode 100644 index 0000000000..32685d2267 --- /dev/null +++ b/ext/mbstring/tests/bug49536.phpt @@ -0,0 +1,20 @@ +--TEST-- +Bug #49536 (mb_detect_encoding() returns incorrect results when strict_mode is turned on) +--SKIPIF-- + +--FILE-- + +--EXPECT-- +string(4) "SJIS" +bool(false) +string(5) "UTF-8" +bool(false)