mirror of
https://github.com/php/php-src.git
synced 2025-08-15 21:48:51 +02:00
Merge branch 'master' into immutable
* master: Remove the "auto" encoding Fixed bug #77025 Add vtbls for EUC-TW encoding
This commit is contained in:
commit
cd0c36c3f9
6 changed files with 60 additions and 20 deletions
|
@ -66,7 +66,9 @@ const mbfl_encoding mbfl_encoding_euc_tw = {
|
||||||
"EUC-TW",
|
"EUC-TW",
|
||||||
(const char *(*)[])&mbfl_encoding_euc_tw_aliases,
|
(const char *(*)[])&mbfl_encoding_euc_tw_aliases,
|
||||||
mblen_table_euctw,
|
mblen_table_euctw,
|
||||||
MBFL_ENCTYPE_MBCS
|
MBFL_ENCTYPE_MBCS,
|
||||||
|
&vtbl_euctw_wchar,
|
||||||
|
&vtbl_wchar_euctw
|
||||||
};
|
};
|
||||||
|
|
||||||
const struct mbfl_identify_vtbl vtbl_identify_euctw = {
|
const struct mbfl_identify_vtbl vtbl_identify_euctw = {
|
||||||
|
|
|
@ -36,6 +36,11 @@
|
||||||
|
|
||||||
#include "mbfilter.h"
|
#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};
|
static const char *mbfl_encoding_8bit_aliases[] = {"binary", NULL};
|
||||||
|
|
||||||
const mbfl_encoding mbfl_encoding_8bit = {
|
const mbfl_encoding mbfl_encoding_8bit = {
|
||||||
|
@ -45,6 +50,42 @@ const mbfl_encoding mbfl_encoding_8bit = {
|
||||||
(const char *(*)[])&mbfl_encoding_8bit_aliases,
|
(const char *(*)[])&mbfl_encoding_8bit_aliases,
|
||||||
NULL,
|
NULL,
|
||||||
MBFL_ENCTYPE_SBCS,
|
MBFL_ENCTYPE_SBCS,
|
||||||
NULL,
|
&vtbl_8bit_wchar,
|
||||||
NULL
|
&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;
|
||||||
|
}
|
||||||
|
|
|
@ -114,22 +114,8 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
static const char *mbfl_encoding_auto_aliases[] = {"unknown", NULL};
|
|
||||||
|
|
||||||
static const mbfl_encoding mbfl_encoding_auto = {
|
|
||||||
mbfl_no_encoding_auto,
|
|
||||||
"auto",
|
|
||||||
NULL,
|
|
||||||
(const char *(*)[])&mbfl_encoding_auto_aliases,
|
|
||||||
NULL,
|
|
||||||
0,
|
|
||||||
NULL,
|
|
||||||
NULL
|
|
||||||
};
|
|
||||||
|
|
||||||
static const mbfl_encoding *mbfl_encoding_ptr_list[] = {
|
static const mbfl_encoding *mbfl_encoding_ptr_list[] = {
|
||||||
&mbfl_encoding_pass,
|
&mbfl_encoding_pass,
|
||||||
&mbfl_encoding_auto,
|
|
||||||
&mbfl_encoding_wchar,
|
&mbfl_encoding_wchar,
|
||||||
&mbfl_encoding_byte2be,
|
&mbfl_encoding_byte2be,
|
||||||
&mbfl_encoding_byte2le,
|
&mbfl_encoding_byte2le,
|
||||||
|
|
|
@ -36,7 +36,6 @@
|
||||||
enum mbfl_no_encoding {
|
enum mbfl_no_encoding {
|
||||||
mbfl_no_encoding_invalid = -1,
|
mbfl_no_encoding_invalid = -1,
|
||||||
mbfl_no_encoding_pass,
|
mbfl_no_encoding_pass,
|
||||||
mbfl_no_encoding_auto,
|
|
||||||
mbfl_no_encoding_wchar,
|
mbfl_no_encoding_wchar,
|
||||||
mbfl_no_encoding_byte2be,
|
mbfl_no_encoding_byte2be,
|
||||||
mbfl_no_encoding_byte2le,
|
mbfl_no_encoding_byte2le,
|
||||||
|
|
12
ext/mbstring/tests/bug77025.phpt
Normal file
12
ext/mbstring/tests/bug77025.phpt
Normal 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)
|
|
@ -38,7 +38,7 @@ echo "== INVALID PARAMETER ==\n";
|
||||||
var_dump(mb_preferred_mime_name('BAD_NAME'));
|
var_dump(mb_preferred_mime_name('BAD_NAME'));
|
||||||
|
|
||||||
// No preferred name
|
// No preferred name
|
||||||
var_dump(mb_preferred_mime_name('auto'));
|
var_dump(mb_preferred_mime_name('pass'));
|
||||||
?>
|
?>
|
||||||
--EXPECTF--
|
--EXPECTF--
|
||||||
Shift_JIS
|
Shift_JIS
|
||||||
|
@ -55,5 +55,5 @@ UCS-4
|
||||||
Warning: mb_preferred_mime_name(): Unknown encoding "BAD_NAME" in %s on line %d
|
Warning: mb_preferred_mime_name(): Unknown encoding "BAD_NAME" in %s on line %d
|
||||||
bool(false)
|
bool(false)
|
||||||
|
|
||||||
Warning: mb_preferred_mime_name(): No MIME preferred name corresponding to "auto" in %s on line %d
|
Warning: mb_preferred_mime_name(): No MIME preferred name corresponding to "pass" in %s on line %d
|
||||||
bool(false)
|
bool(false)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue