summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ext/mbstring/libmbfl/mbfl/mbfilter.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/ext/mbstring/libmbfl/mbfl/mbfilter.c b/ext/mbstring/libmbfl/mbfl/mbfilter.c
index 0e7072fda7..e543951d33 100644
--- a/ext/mbstring/libmbfl/mbfl/mbfilter.c
+++ b/ext/mbstring/libmbfl/mbfl/mbfilter.c
@@ -576,11 +576,25 @@ mbfl_identify_encoding(mbfl_string *string, enum mbfl_no_encoding *elist, int el
for (i = 0; i < num; i++) {
filter = &flist[i];
if (!filter->flag) {
+ if (strict && filter->status) {
+ continue;
+ }
encoding = filter->encoding;
break;
}
}
+ /* fall-back judge */
+ if (!encoding) {
+ for (i = 0; i < num; i++) {
+ filter = &flist[i];
+ if (!filter->flag) {
+ encoding = filter->encoding;
+ break;
+ }
+ }
+ }
+
/* cleanup */
/* dtors should be called in reverse order */
i = num; while (--i >= 0) {