Merge branch 'PHP-7.3'

This commit is contained in:
Nikita Popov 2018-10-17 12:40:39 +02:00
commit e4ccc1a29f
3 changed files with 58 additions and 3 deletions

View file

@ -66,7 +66,9 @@ const mbfl_encoding mbfl_encoding_euc_tw = {
"EUC-TW",
(const char *(*)[])&mbfl_encoding_euc_tw_aliases,
mblen_table_euctw,
MBFL_ENCTYPE_MBCS
MBFL_ENCTYPE_MBCS,
&vtbl_euctw_wchar,
&vtbl_wchar_euctw
};
const struct mbfl_identify_vtbl vtbl_identify_euctw = {

View file

@ -36,6 +36,11 @@
#include "mbfilter.h"
const struct mbfl_convert_vtbl vtbl_8bit_wchar;
const struct mbfl_convert_vtbl vtbl_wchar_8bit;
static int mbfl_filt_conv_8bit_wchar(int c, mbfl_convert_filter *filter);
static int mbfl_filt_conv_wchar_8bit(int c, mbfl_convert_filter *filter);
static const char *mbfl_encoding_8bit_aliases[] = {"binary", NULL};
const mbfl_encoding mbfl_encoding_8bit = {
@ -45,6 +50,42 @@ const mbfl_encoding mbfl_encoding_8bit = {
(const char *(*)[])&mbfl_encoding_8bit_aliases,
NULL,
MBFL_ENCTYPE_SBCS,
NULL,
NULL
&vtbl_8bit_wchar,
&vtbl_wchar_8bit
};
const struct mbfl_convert_vtbl vtbl_8bit_wchar = {
mbfl_no_encoding_8bit,
mbfl_no_encoding_wchar,
mbfl_filt_conv_common_ctor,
mbfl_filt_conv_common_dtor,
mbfl_filt_conv_8bit_wchar,
mbfl_filt_conv_common_flush
};
const struct mbfl_convert_vtbl vtbl_wchar_8bit = {
mbfl_no_encoding_wchar,
mbfl_no_encoding_8bit,
mbfl_filt_conv_common_ctor,
mbfl_filt_conv_common_dtor,
mbfl_filt_conv_wchar_8bit,
mbfl_filt_conv_common_flush
};
#define CK(statement) do { if ((statement) < 0) return (-1); } while (0)
static int mbfl_filt_conv_8bit_wchar(int c, mbfl_convert_filter *filter)
{
return (*filter->output_function)(c, filter->data);
}
static int mbfl_filt_conv_wchar_8bit(int c, mbfl_convert_filter *filter)
{
if (c >= 0 && c < 0x100) {
CK((*filter->output_function)(c, filter->data));
} else {
CK(mbfl_filt_conv_illegal_output(c, filter));
}
return c;
}

View file

@ -0,0 +1,12 @@
--TEST--
Bug #77025: mb_strpos throws Unknown encoding or conversion error
--FILE--
<?php
var_dump(mb_strpos('Hello', 'e', 0, '8bit'));
var_dump(mb_stripos('Hello', 'e', 0, '8bit'));
?>
--EXPECT--
int(1)
int(1)