diff options
Diffstat (limited to 'ext')
| -rw-r--r-- | ext/mbstring/libmbfl/mbfl/mbfilter.c | 5 | ||||
| -rw-r--r-- | ext/mbstring/libmbfl/mbfl/mbfl_convert.c | 7 |
2 files changed, 8 insertions, 4 deletions
diff --git a/ext/mbstring/libmbfl/mbfl/mbfilter.c b/ext/mbstring/libmbfl/mbfl/mbfilter.c index 48dbc75920..313ea598fc 100644 --- a/ext/mbstring/libmbfl/mbfl/mbfilter.c +++ b/ext/mbstring/libmbfl/mbfl/mbfilter.c @@ -147,7 +147,7 @@ mbfl_buffer_converter_new( /* create convert filter */ convd->filter1 = NULL; -convd->filter2 = NULL; + convd->filter2 = NULL; if (mbfl_convert_filter_get_vtbl(convd->from, convd->to) != NULL) { convd->filter1 = mbfl_convert_filter_new(convd->from, convd->to, mbfl_memory_device_output, NULL, &convd->device); } else { @@ -164,6 +164,7 @@ convd->filter2 = NULL; } } if (convd->filter1 == NULL) { + mbfl_free(convd); return NULL; } @@ -2399,7 +2400,7 @@ mime_header_decoder_new(const mbfl_encoding *outcode) mbfl_memory_device_init(&pd->tmpdev, 0, 0); pd->cspos = 0; pd->status = 0; - pd->encoding = &mbfl_encoding_pass; + pd->encoding = &mbfl_encoding_8bit; pd->incode = &mbfl_encoding_ascii; pd->outcode = outcode; /* charset convert filter */ diff --git a/ext/mbstring/libmbfl/mbfl/mbfl_convert.c b/ext/mbstring/libmbfl/mbfl/mbfl_convert.c index 7a0fb60264..b42d69b0a3 100644 --- a/ext/mbstring/libmbfl/mbfl/mbfl_convert.c +++ b/ext/mbstring/libmbfl/mbfl/mbfl_convert.c @@ -171,9 +171,8 @@ mbfl_convert_filter_new( const struct mbfl_convert_vtbl *vtbl; vtbl = mbfl_convert_filter_get_vtbl(from, to); - if (vtbl == NULL) { - vtbl = &vtbl_pass; + return NULL; } /* allocate */ @@ -454,6 +453,10 @@ const struct mbfl_convert_vtbl * mbfl_convert_filter_get_vtbl( to = &mbfl_encoding_8bit; } + if (to == from && (to == &mbfl_encoding_wchar || to == &mbfl_encoding_8bit)) { + return &vtbl_pass; + } + if (to->no_encoding == mbfl_no_encoding_wchar) { return from->input_filter; } else if (from->no_encoding == mbfl_no_encoding_wchar) { |
