Use uint32_t for 'illegal_substchar' codepoint in mbstring

This value is a wchar, so the best type for it is uint32_t.
This commit is contained in:
Alex Dowad 2022-10-04 15:18:10 +09:00
parent 20769fb9ab
commit 3ce888a837
8 changed files with 13 additions and 13 deletions

View File

@ -154,7 +154,7 @@ void mbfl_buffer_converter_illegal_mode(mbfl_buffer_converter *convd, int mode)
}
}
void mbfl_buffer_converter_illegal_substchar(mbfl_buffer_converter *convd, int substchar)
void mbfl_buffer_converter_illegal_substchar(mbfl_buffer_converter *convd, uint32_t substchar)
{
if (convd->filter2) {
convd->filter2->illegal_substchar = substchar;
@ -387,7 +387,7 @@ mbfl_convert_encoding(
if (filter2 != NULL) {
filter2->illegal_mode = MBFL_OUTPUTFILTER_ILLEGAL_MODE_CHAR;
filter2->illegal_substchar = 0x3f; /* '?' */
filter2->illegal_substchar = '?';
}
mbfl_memory_device_init(&device, string->len, (string->len >> 2) + 8);

View File

@ -142,7 +142,7 @@ struct _mbfl_buffer_converter {
MBFLAPI extern mbfl_buffer_converter * mbfl_buffer_converter_new(const mbfl_encoding *from, const mbfl_encoding *to, size_t buf_initsz);
MBFLAPI extern void mbfl_buffer_converter_delete(mbfl_buffer_converter *convd);
MBFLAPI extern void mbfl_buffer_converter_illegal_mode(mbfl_buffer_converter *convd, int mode);
MBFLAPI extern void mbfl_buffer_converter_illegal_substchar(mbfl_buffer_converter *convd, int substchar);
MBFLAPI extern void mbfl_buffer_converter_illegal_substchar(mbfl_buffer_converter *convd, uint32_t substchar);
MBFLAPI extern size_t mbfl_buffer_converter_feed(mbfl_buffer_converter *convd, mbfl_string *string);
MBFLAPI extern void mbfl_buffer_converter_flush(mbfl_buffer_converter *convd);
MBFLAPI extern mbfl_string * mbfl_buffer_converter_result(mbfl_buffer_converter *convd, mbfl_string *result);

View File

@ -243,7 +243,7 @@ int mbfl_filt_conv_illegal_output(int c, mbfl_convert_filter *filter)
unsigned int w = c;
int ret = 0;
int mode_backup = filter->illegal_mode;
int substchar_backup = filter->illegal_substchar;
uint32_t substchar_backup = filter->illegal_substchar;
/* The used substitution character may not be supported by the target character encoding.
* If that happens, first try to use "?" instead and if that also fails, silently drop the

View File

@ -57,7 +57,7 @@ struct _mbfl_convert_filter {
const mbfl_encoding *from;
const mbfl_encoding *to;
int illegal_mode;
int illegal_substchar;
uint32_t illegal_substchar;
size_t num_illegalchar;
void *opaque;
};

View File

@ -883,8 +883,8 @@ static PHP_INI_MH(OnUpdate_mbstring_substitute_character)
} else {
MBSTRG(filter_illegal_mode) = MBFL_OUTPUTFILTER_ILLEGAL_MODE_CHAR;
MBSTRG(current_filter_illegal_mode) = MBFL_OUTPUTFILTER_ILLEGAL_MODE_CHAR;
MBSTRG(filter_illegal_substchar) = 0x3f; /* '?' */
MBSTRG(current_filter_illegal_substchar) = 0x3f; /* '?' */
MBSTRG(filter_illegal_substchar) = '?';
MBSTRG(current_filter_illegal_substchar) = '?';
}
return SUCCESS;
@ -1015,9 +1015,9 @@ ZEND_TSRMLS_CACHE_UPDATE();
mbstring_globals->default_detect_order_list = (enum mbfl_no_encoding *) php_mb_default_identify_list_neut;
mbstring_globals->default_detect_order_list_size = sizeof(php_mb_default_identify_list_neut) / sizeof(php_mb_default_identify_list_neut[0]);
mbstring_globals->filter_illegal_mode = MBFL_OUTPUTFILTER_ILLEGAL_MODE_CHAR;
mbstring_globals->filter_illegal_substchar = 0x3f; /* '?' */
mbstring_globals->filter_illegal_substchar = '?';
mbstring_globals->current_filter_illegal_mode = MBFL_OUTPUTFILTER_ILLEGAL_MODE_CHAR;
mbstring_globals->current_filter_illegal_substchar = 0x3f; /* '?' */
mbstring_globals->current_filter_illegal_substchar = '?';
mbstring_globals->illegalchars = 0;
mbstring_globals->encoding_translation = 0;
mbstring_globals->strict_detection = 0;

View File

@ -87,9 +87,9 @@ ZEND_BEGIN_MODULE_GLOBALS(mbstring)
enum mbfl_no_encoding *default_detect_order_list;
size_t default_detect_order_list_size;
int filter_illegal_mode;
int filter_illegal_substchar;
uint32_t filter_illegal_substchar;
int current_filter_illegal_mode;
int current_filter_illegal_substchar;
uint32_t current_filter_illegal_substchar;
enum mbfl_no_language language;
bool encoding_translation;
bool strict_detection;

View File

@ -238,7 +238,7 @@ static uint32_t *emit_special_casing_sequence(uint32_t w, uint32_t *out)
return out;
}
MBSTRING_API zend_string *php_unicode_convert_case(php_case_mode case_mode, const char *srcstr, size_t in_len, const mbfl_encoding *src_encoding, int illegal_mode, int illegal_substchar)
MBSTRING_API zend_string *php_unicode_convert_case(php_case_mode case_mode, const char *srcstr, size_t in_len, const mbfl_encoding *src_encoding, int illegal_mode, uint32_t illegal_substchar)
{
/* A Unicode codepoint can expand out to up to 3 codepoints when uppercased, lowercased, or title cased
* See http://www.unicode.org/Public/UNIDATA/SpecialCasing.txt */

View File

@ -91,7 +91,7 @@ typedef enum {
MBSTRING_API zend_string *php_unicode_convert_case(
php_case_mode case_mode, const char *srcstr, size_t srclen,
const mbfl_encoding *src_encoding, int illegal_mode, int illegal_substchar);
const mbfl_encoding *src_encoding, int illegal_mode, uint32_t illegal_substchar);
/* Optimize the common ASCII case for lower/upper */