diff --git a/ext/mbstring/mbstring.c b/ext/mbstring/mbstring.c index 30855b385a1..b22c494d634 100644 --- a/ext/mbstring/mbstring.c +++ b/ext/mbstring/mbstring.c @@ -2753,7 +2753,7 @@ PHP_FUNCTION(mb_convert_encoding) } /* }}} */ -static zend_string *mbstring_convert_case(int case_mode, const char *str, size_t str_len, const mbfl_encoding *enc) +static zend_string *mbstring_convert_case(php_case_mode case_mode, const char *str, size_t str_len, const mbfl_encoding *enc) { return php_unicode_convert_case(case_mode, str, str_len, enc, MBSTRG(current_filter_illegal_mode), MBSTRG(current_filter_illegal_substchar)); } @@ -2775,7 +2775,7 @@ PHP_FUNCTION(mb_convert_case) RETURN_THROWS(); } - if (case_mode < 0 || case_mode > PHP_UNICODE_CASE_MODE_MAX) { + if (case_mode < 0 || case_mode >= PHP_UNICODE_CASE_MODE_MAX) { zend_argument_value_error(2, "must be one of the MB_CASE_* constants"); RETURN_THROWS(); } diff --git a/ext/mbstring/php_unicode.c b/ext/mbstring/php_unicode.c index 23bf2f5399a..37552f66c11 100644 --- a/ext/mbstring/php_unicode.c +++ b/ext/mbstring/php_unicode.c @@ -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(int 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, int 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 */ diff --git a/ext/mbstring/php_unicode.h b/ext/mbstring/php_unicode.h index 16496fbd125..be5dc110236 100644 --- a/ext/mbstring/php_unicode.h +++ b/ext/mbstring/php_unicode.h @@ -77,19 +77,21 @@ MBSTRING_API bool php_unicode_is_prop(unsigned long code, ...); MBSTRING_API bool php_unicode_is_prop1(unsigned long code, int prop); -MBSTRING_API zend_string *php_unicode_convert_case( - int case_mode, const char *srcstr, size_t srclen, - const mbfl_encoding *src_encoding, int illegal_mode, int illegal_substchar); +typedef enum { + PHP_UNICODE_CASE_UPPER = 0, + PHP_UNICODE_CASE_LOWER, + PHP_UNICODE_CASE_TITLE, + PHP_UNICODE_CASE_FOLD, + PHP_UNICODE_CASE_UPPER_SIMPLE, + PHP_UNICODE_CASE_LOWER_SIMPLE, + PHP_UNICODE_CASE_TITLE_SIMPLE, + PHP_UNICODE_CASE_FOLD_SIMPLE, + PHP_UNICODE_CASE_MODE_MAX +} php_case_mode; -#define PHP_UNICODE_CASE_UPPER 0 -#define PHP_UNICODE_CASE_LOWER 1 -#define PHP_UNICODE_CASE_TITLE 2 -#define PHP_UNICODE_CASE_FOLD 3 -#define PHP_UNICODE_CASE_UPPER_SIMPLE 4 -#define PHP_UNICODE_CASE_LOWER_SIMPLE 5 -#define PHP_UNICODE_CASE_TITLE_SIMPLE 6 -#define PHP_UNICODE_CASE_FOLD_SIMPLE 7 -#define PHP_UNICODE_CASE_MODE_MAX 7 +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); /* Optimize the common ASCII case for lower/upper */