diff options
| -rw-r--r-- | ext/mbstring/libmbfl/mbfl/mbfilter.c | 14 |
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) { |
