diff options
Diffstat (limited to 'ext/mbstring')
-rw-r--r-- | ext/mbstring/libmbfl/filters/mbfilter_htmlent.c | 17 | ||||
-rw-r--r-- | ext/mbstring/mbstring.c | 198 | ||||
-rw-r--r-- | ext/mbstring/mbstring.h | 3 | ||||
-rw-r--r-- | ext/mbstring/php_mbregex.c | 2 | ||||
-rw-r--r-- | ext/mbstring/php_unicode.c | 2 | ||||
-rw-r--r-- | ext/mbstring/tests/mb_split.phpt | 20 | ||||
-rw-r--r-- | ext/mbstring/tests/php_gr_jp_10830.phpt | 4 | ||||
-rw-r--r-- | ext/mbstring/tests/php_gr_jp_dev_884-1.phpt | 3 | ||||
-rw-r--r-- | ext/mbstring/tests/php_gr_jp_dev_884-2.phpt | 6 |
9 files changed, 185 insertions, 70 deletions
diff --git a/ext/mbstring/libmbfl/filters/mbfilter_htmlent.c b/ext/mbstring/libmbfl/filters/mbfilter_htmlent.c index 6c6654a1b9..40c24c3424 100644 --- a/ext/mbstring/libmbfl/filters/mbfilter_htmlent.c +++ b/ext/mbstring/libmbfl/filters/mbfilter_htmlent.c @@ -232,7 +232,8 @@ int mbfl_filt_conv_html_dec(int c, mbfl_convert_filter *filter) mbfl_filt_conv_html_dec_flush(filter); if (c=='&') { - buffer[filter->status++] = '&'; + filter->status = 1; + buffer[0] = '&'; } } } @@ -243,19 +244,17 @@ int mbfl_filt_conv_html_dec(int c, mbfl_convert_filter *filter) int mbfl_filt_conv_html_dec_flush(mbfl_convert_filter *filter) { int status, pos = 0; - unsigned char *buffer; - int err = 0; + char *buffer; - buffer = (unsigned char*)filter->opaque; + buffer = (char*)filter->opaque; status = filter->status; - filter->status = 0; /* flush fragments */ while (status--) { - int e = (*filter->output_function)(buffer[pos++], filter->data); - if (e != 0) - err = e; + CK((*filter->output_function)(buffer[pos++], filter->data)); } - return err; + filter->status = 0; + /*filter->buffer = 0; of cause NOT*/ + return 0; } diff --git a/ext/mbstring/mbstring.c b/ext/mbstring/mbstring.c index 719c62b727..009631e77f 100644 --- a/ext/mbstring/mbstring.c +++ b/ext/mbstring/mbstring.c @@ -208,49 +208,60 @@ static const struct mb_overload_def mb_ovld[] = { /* }}} */ /* {{{ arginfo */ +static ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_language, 0, 0, 0) ZEND_ARG_INFO(0, language) ZEND_END_ARG_INFO() +static ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_internal_encoding, 0, 0, 0) ZEND_ARG_INFO(0, encoding) ZEND_END_ARG_INFO() +static ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_http_input, 0, 0, 0) ZEND_ARG_INFO(0, type) ZEND_END_ARG_INFO() +static ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_http_output, 0, 0, 0) ZEND_ARG_INFO(0, encoding) ZEND_END_ARG_INFO() +static ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_detect_order, 0, 0, 0) ZEND_ARG_INFO(0, encoding) ZEND_END_ARG_INFO() +static ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_substitute_character, 0, 0, 0) ZEND_ARG_INFO(0, substchar) ZEND_END_ARG_INFO() +static ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_preferred_mime_name, 0, 0, 1) ZEND_ARG_INFO(0, encoding) ZEND_END_ARG_INFO() +static ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_parse_str, 0, 0, 1) ZEND_ARG_INFO(0, encoded_string) ZEND_ARG_INFO(1, result) ZEND_END_ARG_INFO() +static ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_output_handler, 0, 0, 2) ZEND_ARG_INFO(0, contents) ZEND_ARG_INFO(0, status) ZEND_END_ARG_INFO() +static ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_strlen, 0, 0, 1) ZEND_ARG_INFO(0, str) ZEND_ARG_INFO(0, encoding) ZEND_END_ARG_INFO() +static ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_strpos, 0, 0, 2) ZEND_ARG_INFO(0, haystack) ZEND_ARG_INFO(0, needle) @@ -258,6 +269,7 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_strpos, 0, 0, 2) ZEND_ARG_INFO(0, encoding) ZEND_END_ARG_INFO() +static ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_strrpos, 0, 0, 2) ZEND_ARG_INFO(0, haystack) ZEND_ARG_INFO(0, needle) @@ -265,6 +277,7 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_strrpos, 0, 0, 2) ZEND_ARG_INFO(0, encoding) ZEND_END_ARG_INFO() +static ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_stripos, 0, 0, 2) ZEND_ARG_INFO(0, haystack) ZEND_ARG_INFO(0, needle) @@ -272,6 +285,7 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_stripos, 0, 0, 2) ZEND_ARG_INFO(0, encoding) ZEND_END_ARG_INFO() +static ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_strripos, 0, 0, 2) ZEND_ARG_INFO(0, haystack) ZEND_ARG_INFO(0, needle) @@ -279,6 +293,7 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_strripos, 0, 0, 2) ZEND_ARG_INFO(0, encoding) ZEND_END_ARG_INFO() +static ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_strstr, 0, 0, 2) ZEND_ARG_INFO(0, haystack) ZEND_ARG_INFO(0, needle) @@ -286,6 +301,7 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_strstr, 0, 0, 2) ZEND_ARG_INFO(0, encoding) ZEND_END_ARG_INFO() +static ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_strrchr, 0, 0, 2) ZEND_ARG_INFO(0, haystack) ZEND_ARG_INFO(0, needle) @@ -293,6 +309,7 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_strrchr, 0, 0, 2) ZEND_ARG_INFO(0, encoding) ZEND_END_ARG_INFO() +static ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_stristr, 0, 0, 2) ZEND_ARG_INFO(0, haystack) ZEND_ARG_INFO(0, needle) @@ -300,6 +317,7 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_stristr, 0, 0, 2) ZEND_ARG_INFO(0, encoding) ZEND_END_ARG_INFO() +static ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_strrichr, 0, 0, 2) ZEND_ARG_INFO(0, haystack) ZEND_ARG_INFO(0, needle) @@ -307,12 +325,14 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_strrichr, 0, 0, 2) ZEND_ARG_INFO(0, encoding) ZEND_END_ARG_INFO() +static ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_substr_count, 0, 0, 2) ZEND_ARG_INFO(0, haystack) ZEND_ARG_INFO(0, needle) ZEND_ARG_INFO(0, encoding) ZEND_END_ARG_INFO() +static ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_substr, 0, 0, 2) ZEND_ARG_INFO(0, str) ZEND_ARG_INFO(0, start) @@ -320,6 +340,7 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_substr, 0, 0, 2) ZEND_ARG_INFO(0, encoding) ZEND_END_ARG_INFO() +static ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_strcut, 0, 0, 2) ZEND_ARG_INFO(0, str) ZEND_ARG_INFO(0, start) @@ -327,11 +348,13 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_strcut, 0, 0, 2) ZEND_ARG_INFO(0, encoding) ZEND_END_ARG_INFO() +static ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_strwidth, 0, 0, 1) ZEND_ARG_INFO(0, str) ZEND_ARG_INFO(0, encoding) ZEND_END_ARG_INFO() +static ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_strimwidth, 0, 0, 3) ZEND_ARG_INFO(0, str) ZEND_ARG_INFO(0, start) @@ -340,41 +363,44 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_strimwidth, 0, 0, 3) ZEND_ARG_INFO(0, encoding) ZEND_END_ARG_INFO() +static ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_convert_encoding, 0, 0, 2) ZEND_ARG_INFO(0, str) ZEND_ARG_INFO(0, to) ZEND_ARG_INFO(0, from) ZEND_END_ARG_INFO() +static ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_convert_case, 0, 0, 2) ZEND_ARG_INFO(0, sourcestring) ZEND_ARG_INFO(0, mode) ZEND_ARG_INFO(0, encoding) ZEND_END_ARG_INFO() +static ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_strtoupper, 0, 0, 1) ZEND_ARG_INFO(0, sourcestring) ZEND_ARG_INFO(0, encoding) ZEND_END_ARG_INFO() +static ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_strtolower, 0, 0, 1) ZEND_ARG_INFO(0, sourcestring) ZEND_ARG_INFO(0, encoding) ZEND_END_ARG_INFO() +static ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_detect_encoding, 0, 0, 1) ZEND_ARG_INFO(0, str) ZEND_ARG_INFO(0, encoding_list) ZEND_ARG_INFO(0, strict) ZEND_END_ARG_INFO() +static ZEND_BEGIN_ARG_INFO(arginfo_mb_list_encodings, 0) ZEND_END_ARG_INFO() -ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_encoding_aliases, 0, 0, 1) - ZEND_ARG_INFO(0, encoding) -ZEND_END_ARG_INFO() - +static ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_encode_mimeheader, 0, 0, 1) ZEND_ARG_INFO(0, str) ZEND_ARG_INFO(0, charset) @@ -383,34 +409,40 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_encode_mimeheader, 0, 0, 1) ZEND_ARG_INFO(0, indent) ZEND_END_ARG_INFO() +static ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_decode_mimeheader, 0, 0, 1) ZEND_ARG_INFO(0, string) ZEND_END_ARG_INFO() +static ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_convert_kana, 0, 0, 1) ZEND_ARG_INFO(0, str) ZEND_ARG_INFO(0, option) ZEND_ARG_INFO(0, encoding) ZEND_END_ARG_INFO() +static ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_convert_variables, 1, 0, 3) ZEND_ARG_INFO(0, to) ZEND_ARG_INFO(0, from) ZEND_ARG_INFO(1, ...) ZEND_END_ARG_INFO() +static ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_encode_numericentity, 0, 0, 2) ZEND_ARG_INFO(0, string) ZEND_ARG_INFO(0, convmap) ZEND_ARG_INFO(0, encoding) ZEND_END_ARG_INFO() +static ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_decode_numericentity, 0, 0, 2) ZEND_ARG_INFO(0, string) ZEND_ARG_INFO(0, convmap) ZEND_ARG_INFO(0, encoding) ZEND_END_ARG_INFO() +static ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_send_mail, 0, 0, 3) ZEND_ARG_INFO(0, to) ZEND_ARG_INFO(0, subject) @@ -419,31 +451,37 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_send_mail, 0, 0, 3) ZEND_ARG_INFO(0, additional_parameters) ZEND_END_ARG_INFO() +static ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_get_info, 0, 0, 0) ZEND_ARG_INFO(0, type) ZEND_END_ARG_INFO() +static ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_check_encoding, 0, 0, 0) ZEND_ARG_INFO(0, var) ZEND_ARG_INFO(0, encoding) ZEND_END_ARG_INFO() +static ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_regex_encoding, 0, 0, 0) ZEND_ARG_INFO(0, encoding) ZEND_END_ARG_INFO() +static ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_ereg, 0, 0, 2) ZEND_ARG_INFO(0, pattern) ZEND_ARG_INFO(0, string) ZEND_ARG_INFO(1, registers) ZEND_END_ARG_INFO() +static ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_eregi, 0, 0, 2) ZEND_ARG_INFO(0, pattern) ZEND_ARG_INFO(0, string) ZEND_ARG_INFO(1, registers) ZEND_END_ARG_INFO() +static ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_ereg_replace, 0, 0, 3) ZEND_ARG_INFO(0, pattern) ZEND_ARG_INFO(0, replacement) @@ -451,55 +489,66 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_ereg_replace, 0, 0, 3) ZEND_ARG_INFO(0, option) ZEND_END_ARG_INFO() +static ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_eregi_replace, 0, 0, 3) ZEND_ARG_INFO(0, pattern) ZEND_ARG_INFO(0, replacement) ZEND_ARG_INFO(0, string) ZEND_END_ARG_INFO() +static ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_split, 0, 0, 2) ZEND_ARG_INFO(0, pattern) ZEND_ARG_INFO(0, string) ZEND_ARG_INFO(0, limit) ZEND_END_ARG_INFO() +static ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_ereg_match, 0, 0, 2) ZEND_ARG_INFO(0, pattern) ZEND_ARG_INFO(0, string) ZEND_ARG_INFO(0, option) ZEND_END_ARG_INFO() +static ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_ereg_search, 0, 0, 0) ZEND_ARG_INFO(0, pattern) ZEND_ARG_INFO(0, option) ZEND_END_ARG_INFO() +static ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_ereg_search_pos, 0, 0, 0) ZEND_ARG_INFO(0, pattern) ZEND_ARG_INFO(0, option) ZEND_END_ARG_INFO() +static ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_ereg_search_regs, 0, 0, 0) ZEND_ARG_INFO(0, pattern) ZEND_ARG_INFO(0, option) ZEND_END_ARG_INFO() +static ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_ereg_search_init, 0, 0, 1) ZEND_ARG_INFO(0, string) ZEND_ARG_INFO(0, pattern) ZEND_ARG_INFO(0, option) ZEND_END_ARG_INFO() +static ZEND_BEGIN_ARG_INFO(arginfo_mb_ereg_search_getregs, 0) ZEND_END_ARG_INFO() +static ZEND_BEGIN_ARG_INFO(arginfo_mb_ereg_search_getpos, 0) ZEND_END_ARG_INFO() +static ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_ereg_search_setpos, 0, 0, 1) ZEND_ARG_INFO(0, position) ZEND_END_ARG_INFO() +static ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_regex_set_options, 0, 0, 0) ZEND_ARG_INFO(0, options) ZEND_END_ARG_INFO() @@ -536,7 +585,6 @@ const zend_function_entry mbstring_functions[] = { PHP_FE(mb_convert_encoding, arginfo_mb_convert_encoding) PHP_FE(mb_detect_encoding, arginfo_mb_detect_encoding) PHP_FE(mb_list_encodings, arginfo_mb_list_encodings) - PHP_FE(mb_encoding_aliases, arginfo_mb_encoding_aliases) PHP_FE(mb_convert_kana, arginfo_mb_convert_kana) PHP_FE(mb_encode_mimeheader, arginfo_mb_encode_mimeheader) PHP_FE(mb_decode_mimeheader, arginfo_mb_decode_mimeheader) @@ -1279,8 +1327,7 @@ static int _php_mb_ini_mbstring_internal_encoding_set(const char *new_value, uin /* {{{ static PHP_INI_MH(OnUpdate_mbstring_internal_encoding) */ static PHP_INI_MH(OnUpdate_mbstring_internal_encoding) { - if (stage == PHP_INI_STAGE_STARTUP || stage == PHP_INI_STAGE_SHUTDOWN - || stage == PHP_INI_STAGE_RUNTIME) { + if (stage == PHP_INI_STAGE_STARTUP || stage == PHP_INI_STAGE_SHUTDOWN) { return _php_mb_ini_mbstring_internal_encoding_set(new_value, new_value_length TSRMLS_CC); } else { /* the corresponding mbstring globals needs to be set according to the @@ -3070,7 +3117,7 @@ PHP_FUNCTION(mb_convert_encoding) s_free = _from_encodings; break; default: - convert_to_string(arg_old); + convert_to_string_ex(&arg_old); _from_encodings = Z_STRVAL_P(arg_old); break; } @@ -3191,7 +3238,7 @@ PHP_FUNCTION(mb_detect_encoding) } break; default: - convert_to_string(encoding_list); + convert_to_string_ex(&encoding_list); if (!php_mb_parse_encoding_list(Z_STRVAL_P(encoding_list), Z_STRLEN_P(encoding_list), &list, &size, 0 TSRMLS_CC)) { if (list) { efree(list); @@ -3251,29 +3298,117 @@ PHP_FUNCTION(mb_list_encodings) } /* }}} */ -/* {{{ proto array mb_encoding_aliases(string encoding) - Returns an array of the aliases of a given encoding name */ -PHP_FUNCTION(mb_encoding_aliases) +/* {{{ proto array mb_list_encodings_alias_names([string encoding]) + Returns an array of all supported alias encodings */ +PHP_FUNCTION(mb_list_encodings_alias_names) { + const mbfl_encoding **encodings; const mbfl_encoding *encoding; + enum mbfl_no_encoding no_encoding; + int i, j; + zval *row; char *name = NULL; int name_len; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &name, &name_len) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|s", &name, &name_len) == FAILURE) { RETURN_FALSE; } - encoding = mbfl_name2encoding(name); - if (!encoding) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unknown encoding \"%s\"", name); + if (name == NULL) { + array_init(return_value); + i = 0; + encodings = mbfl_get_supported_encodings(); + while ((encoding = encodings[i++]) != NULL) { + MAKE_STD_ZVAL(row); + array_init(row); + if (encoding->aliases != NULL) { + j = 0; + while ((*encoding->aliases)[j] != NULL) { + add_next_index_string(row, (char *)(*encoding->aliases)[j], 1); + j++; + } + } + add_assoc_zval(return_value, (char *) encoding->name, row); + } + } else { + no_encoding = mbfl_name2no_encoding(name); + if (no_encoding == mbfl_no_encoding_invalid) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unknown encoding \"%s\"", name); + RETURN_FALSE; + } + + name = (char *)mbfl_no_encoding2name(no_encoding); + if (name != NULL) { + i = 0; + encodings = mbfl_get_supported_encodings(); + while ((encoding = encodings[i++]) != NULL) { + if (strcmp(encoding->name, name) != 0){ continue; } + + array_init(return_value); + if (encoding->aliases != NULL) { + j = 0; + while ((*encoding->aliases)[j] != NULL) { + add_next_index_string(return_value, (char *)(*encoding->aliases)[j], 1); + j++; + } + } + + break; + } + } else { + RETURN_FALSE; + } + } +} +/* }}} */ + +/* {{{ proto mixed mb_list_mime_names([string encoding]) + Returns an array or string of all supported mime names */ +PHP_FUNCTION(mb_list_mime_names) +{ + const mbfl_encoding **encodings; + const mbfl_encoding *encoding; + enum mbfl_no_encoding no_encoding; + int i; + char *name = NULL; + int name_len; + + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|s", &name, &name_len) == FAILURE) { RETURN_FALSE; } - array_init(return_value); - if (encoding->aliases != NULL) { - const char **alias; - for (alias = *encoding->aliases; *alias; ++alias) { - add_next_index_string(return_value, (char *)*alias, 1); + if (name == NULL) { + array_init(return_value); + i = 0; + encodings = mbfl_get_supported_encodings(); + while ((encoding = encodings[i++]) != NULL) { + if(encoding->mime_name != NULL) { + add_assoc_string(return_value, (char *) encoding->name, (char *) encoding->mime_name, 1); + } else{ + add_assoc_string(return_value, (char *) encoding->name, "", 1); + } + } + } else { + no_encoding = mbfl_name2no_encoding(name); + if (no_encoding == mbfl_no_encoding_invalid) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unknown encoding \"%s\"", name); + RETURN_FALSE; + } + + name = (char *)mbfl_no_encoding2name(no_encoding); + if (name != NULL) { + i = 0; + encodings = mbfl_get_supported_encodings(); + while ((encoding = encodings[i++]) != NULL) { + if (strcmp(encoding->name, name) != 0){ continue; } + if(encoding->mime_name != NULL) { + RETURN_STRING((char *) encoding->mime_name, 1); + } + break; + } + RETURN_STRING("", 1); + } else { + RETURN_FALSE; } } } @@ -4531,12 +4666,14 @@ PHP_FUNCTION(mb_check_encoding) php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to create converter"); RETURN_FALSE; } - mbfl_buffer_converter_illegal_mode(convd, MBFL_OUTPUTFILTER_ILLEGAL_MODE_NONE); - mbfl_buffer_converter_illegal_substchar(convd, 0); + mbfl_buffer_converter_illegal_mode(convd, MBSTRG(current_filter_illegal_mode)); + mbfl_buffer_converter_illegal_substchar(convd, MBSTRG(current_filter_illegal_substchar)); /* initialize string */ - mbfl_string_init_set(&string, mbfl_no_language_neutral, no_encoding); + mbfl_string_init(&string); mbfl_string_init(&result); + string.no_encoding = no_encoding; + string.no_language = MBSTRG(language); string.val = (unsigned char *)var; string.len = var_len; @@ -4544,12 +4681,17 @@ PHP_FUNCTION(mb_check_encoding) illegalchars = mbfl_buffer_illegalchars(convd); mbfl_buffer_converter_delete(convd); - RETVAL_FALSE; if (ret != NULL) { - if (illegalchars == 0 && string.len == result.len && memcmp(string.val, result.val, string.len) == 0) { - RETVAL_TRUE; + MBSTRG(illegalchars) += illegalchars; + if (illegalchars == 0 && strncmp((char *)string.val, (char *)ret->val, string.len) == 0) { + efree(ret->val); + RETURN_TRUE; + } else { + efree(ret->val); + RETURN_FALSE; } - mbfl_string_clear(&result); + } else { + RETURN_FALSE; } } /* }}} */ diff --git a/ext/mbstring/mbstring.h b/ext/mbstring/mbstring.h index 83204f5f54..290c4d6171 100644 --- a/ext/mbstring/mbstring.h +++ b/ext/mbstring/mbstring.h @@ -117,7 +117,8 @@ PHP_FUNCTION(mb_strimwidth); PHP_FUNCTION(mb_convert_encoding); PHP_FUNCTION(mb_detect_encoding); PHP_FUNCTION(mb_list_encodings); -PHP_FUNCTION(mb_encoding_aliases); +PHP_FUNCTION(mb_list_encodings_alias_names); +PHP_FUNCTION(mb_list_mime_names); PHP_FUNCTION(mb_convert_kana); PHP_FUNCTION(mb_encode_mimeheader); PHP_FUNCTION(mb_decode_mimeheader); diff --git a/ext/mbstring/php_mbregex.c b/ext/mbstring/php_mbregex.c index 64af88b6b4..0e541f6b41 100644 --- a/ext/mbstring/php_mbregex.c +++ b/ext/mbstring/php_mbregex.c @@ -114,7 +114,6 @@ void php_mb_regex_globals_free(zend_mb_regex_globals *pglobals TSRMLS_DC) /* {{{ PHP_MINIT_FUNCTION(mb_regex) */ PHP_MINIT_FUNCTION(mb_regex) { - onig_init(); return SUCCESS; } /* }}} */ @@ -122,7 +121,6 @@ PHP_MINIT_FUNCTION(mb_regex) /* {{{ PHP_MSHUTDOWN_FUNCTION(mb_regex) */ PHP_MSHUTDOWN_FUNCTION(mb_regex) { - onig_end(); return SUCCESS; } /* }}} */ diff --git a/ext/mbstring/php_unicode.c b/ext/mbstring/php_unicode.c index 4bcce8d02e..d07d278a1d 100644 --- a/ext/mbstring/php_unicode.c +++ b/ext/mbstring/php_unicode.c @@ -308,7 +308,7 @@ MBSTRING_API char *php_unicode_convert_case(int case_mode, const char *srcstr, s for (i = 0; i < unicode_len; i+=4) { int res = php_unicode_is_prop( BE_ARY_TO_UINT32(&unicode_ptr[i]), - UC_MN|UC_ME|UC_CF|UC_LM|UC_SK|UC_LU|UC_LL|UC_LT|UC_PO|UC_OS, 0); + UC_MN|UC_ME|UC_CF|UC_LM|UC_SK|UC_LU|UC_LL|UC_LT, 0); if (mode) { if (res) { UINT32_TO_BE_ARY(&unicode_ptr[i], diff --git a/ext/mbstring/tests/mb_split.phpt b/ext/mbstring/tests/mb_split.phpt index 2951f76ff9..abe12763eb 100644 --- a/ext/mbstring/tests/mb_split.phpt +++ b/ext/mbstring/tests/mb_split.phpt @@ -35,32 +35,14 @@ mbstring.func_overload=0 } ?> ---EXPECTF-- +--EXPECT-- bool(true) - -Deprecated: Function split() is deprecated in %s on line %d ok - -Deprecated: Function split() is deprecated in %s on line %d ok - -Deprecated: Function split() is deprecated in %s on line %d ok - -Deprecated: Function split() is deprecated in %s on line %d ok - -Deprecated: Function split() is deprecated in %s on line %d ok - -Deprecated: Function split() is deprecated in %s on line %d ok - -Deprecated: Function split() is deprecated in %s on line %d 2-2 - -Deprecated: Function split() is deprecated in %s on line %d 3-3 - -Deprecated: Function split() is deprecated in %s on line %d 4-4 diff --git a/ext/mbstring/tests/php_gr_jp_10830.phpt b/ext/mbstring/tests/php_gr_jp_10830.phpt index 1cbfc2ae1f..85eefd756c 100644 --- a/ext/mbstring/tests/php_gr_jp_10830.phpt +++ b/ext/mbstring/tests/php_gr_jp_10830.phpt @@ -13,8 +13,6 @@ var_dump( mb_ereg("^[^><]+$",$a) ); var_dump( ereg("^[^><]+$",$a) ); ?> ---EXPECTF-- +--EXPECT-- bool(false) - -Deprecated: Function ereg() is deprecated in %s on line %d bool(false) diff --git a/ext/mbstring/tests/php_gr_jp_dev_884-1.phpt b/ext/mbstring/tests/php_gr_jp_dev_884-1.phpt index 64fc054aab..a0ab0c847d 100644 --- a/ext/mbstring/tests/php_gr_jp_dev_884-1.phpt +++ b/ext/mbstring/tests/php_gr_jp_dev_884-1.phpt @@ -12,8 +12,7 @@ var_dump(ereg_replace(".*", "b", "a")); var_dump(preg_replace("/.*/", "b", "a")); var_dump(mb_ereg_replace(".*", "b", "a")); ?> ---EXPECTF-- -Deprecated: Function ereg_replace() is deprecated in %s on line %d +--EXPECT-- string(2) "bb" string(2) "bb" string(2) "bb" diff --git a/ext/mbstring/tests/php_gr_jp_dev_884-2.phpt b/ext/mbstring/tests/php_gr_jp_dev_884-2.phpt index 937b2171b5..d81f92f416 100644 --- a/ext/mbstring/tests/php_gr_jp_dev_884-2.phpt +++ b/ext/mbstring/tests/php_gr_jp_dev_884-2.phpt @@ -12,12 +12,8 @@ var_dump(ereg_replace("C?$", "Z", "ABC")); var_dump(mb_ereg_replace("C*$", "Z", "ABC")); var_dump(ereg_replace("C*$", "Z", "ABC")); ?> ---EXPECTF-- +--EXPECT-- string(4) "ABZZ" - -Deprecated: Function ereg_replace() is deprecated in %s on line %d string(4) "ABZZ" string(4) "ABZZ" - -Deprecated: Function ereg_replace() is deprecated in %s on line %d string(4) "ABZZ" |