Skip to content

Commit cd0c36c

Browse files
committed
Merge branch 'master' into immutable
* master: Remove the "auto" encoding Fixed bug #77025 Add vtbls for EUC-TW encoding
2 parents 4740dab + ad6738e commit cd0c36c

File tree

6 files changed

+60
-20
lines changed

6 files changed

+60
-20
lines changed

ext/mbstring/libmbfl/filters/mbfilter_euc_tw.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,9 @@ const mbfl_encoding mbfl_encoding_euc_tw = {
6666
"EUC-TW",
6767
(const char *(*)[])&mbfl_encoding_euc_tw_aliases,
6868
mblen_table_euctw,
69-
MBFL_ENCTYPE_MBCS
69+
MBFL_ENCTYPE_MBCS,
70+
&vtbl_euctw_wchar,
71+
&vtbl_wchar_euctw
7072
};
7173

7274
const struct mbfl_identify_vtbl vtbl_identify_euctw = {

ext/mbstring/libmbfl/mbfl/mbfilter_8bit.c

Lines changed: 43 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,11 @@
3636

3737
#include "mbfilter.h"
3838

39+
const struct mbfl_convert_vtbl vtbl_8bit_wchar;
40+
const struct mbfl_convert_vtbl vtbl_wchar_8bit;
41+
static int mbfl_filt_conv_8bit_wchar(int c, mbfl_convert_filter *filter);
42+
static int mbfl_filt_conv_wchar_8bit(int c, mbfl_convert_filter *filter);
43+
3944
static const char *mbfl_encoding_8bit_aliases[] = {"binary", NULL};
4045

4146
const mbfl_encoding mbfl_encoding_8bit = {
@@ -45,6 +50,42 @@ const mbfl_encoding mbfl_encoding_8bit = {
4550
(const char *(*)[])&mbfl_encoding_8bit_aliases,
4651
NULL,
4752
MBFL_ENCTYPE_SBCS,
48-
NULL,
49-
NULL
53+
&vtbl_8bit_wchar,
54+
&vtbl_wchar_8bit
55+
};
56+
57+
const struct mbfl_convert_vtbl vtbl_8bit_wchar = {
58+
mbfl_no_encoding_8bit,
59+
mbfl_no_encoding_wchar,
60+
mbfl_filt_conv_common_ctor,
61+
mbfl_filt_conv_common_dtor,
62+
mbfl_filt_conv_8bit_wchar,
63+
mbfl_filt_conv_common_flush
64+
};
65+
66+
const struct mbfl_convert_vtbl vtbl_wchar_8bit = {
67+
mbfl_no_encoding_wchar,
68+
mbfl_no_encoding_8bit,
69+
mbfl_filt_conv_common_ctor,
70+
mbfl_filt_conv_common_dtor,
71+
mbfl_filt_conv_wchar_8bit,
72+
mbfl_filt_conv_common_flush
5073
};
74+
75+
#define CK(statement) do { if ((statement) < 0) return (-1); } while (0)
76+
77+
static int mbfl_filt_conv_8bit_wchar(int c, mbfl_convert_filter *filter)
78+
{
79+
return (*filter->output_function)(c, filter->data);
80+
}
81+
82+
static int mbfl_filt_conv_wchar_8bit(int c, mbfl_convert_filter *filter)
83+
{
84+
if (c >= 0 && c < 0x100) {
85+
CK((*filter->output_function)(c, filter->data));
86+
} else {
87+
CK(mbfl_filt_conv_illegal_output(c, filter));
88+
}
89+
90+
return c;
91+
}

ext/mbstring/libmbfl/mbfl/mbfl_encoding.c

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -114,22 +114,8 @@
114114
#endif
115115

116116

117-
static const char *mbfl_encoding_auto_aliases[] = {"unknown", NULL};
118-
119-
static const mbfl_encoding mbfl_encoding_auto = {
120-
mbfl_no_encoding_auto,
121-
"auto",
122-
NULL,
123-
(const char *(*)[])&mbfl_encoding_auto_aliases,
124-
NULL,
125-
0,
126-
NULL,
127-
NULL
128-
};
129-
130117
static const mbfl_encoding *mbfl_encoding_ptr_list[] = {
131118
&mbfl_encoding_pass,
132-
&mbfl_encoding_auto,
133119
&mbfl_encoding_wchar,
134120
&mbfl_encoding_byte2be,
135121
&mbfl_encoding_byte2le,

ext/mbstring/libmbfl/mbfl/mbfl_encoding.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@
3636
enum mbfl_no_encoding {
3737
mbfl_no_encoding_invalid = -1,
3838
mbfl_no_encoding_pass,
39-
mbfl_no_encoding_auto,
4039
mbfl_no_encoding_wchar,
4140
mbfl_no_encoding_byte2be,
4241
mbfl_no_encoding_byte2le,

ext/mbstring/tests/bug77025.phpt

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
--TEST--
2+
Bug #77025: mb_strpos throws Unknown encoding or conversion error
3+
--FILE--
4+
<?php
5+
6+
var_dump(mb_strpos('Hello', 'e', 0, '8bit'));
7+
var_dump(mb_stripos('Hello', 'e', 0, '8bit'));
8+
9+
?>
10+
--EXPECT--
11+
int(1)
12+
int(1)

ext/mbstring/tests/mb_preferred_mime_name.phpt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ echo "== INVALID PARAMETER ==\n";
3838
var_dump(mb_preferred_mime_name('BAD_NAME'));
3939

4040
// No preferred name
41-
var_dump(mb_preferred_mime_name('auto'));
41+
var_dump(mb_preferred_mime_name('pass'));
4242
?>
4343
--EXPECTF--
4444
Shift_JIS
@@ -55,5 +55,5 @@ UCS-4
5555
Warning: mb_preferred_mime_name(): Unknown encoding "BAD_NAME" in %s on line %d
5656
bool(false)
5757

58-
Warning: mb_preferred_mime_name(): No MIME preferred name corresponding to "auto" in %s on line %d
58+
Warning: mb_preferred_mime_name(): No MIME preferred name corresponding to "pass" in %s on line %d
5959
bool(false)

0 commit comments

Comments
 (0)