Hi Moriyoshi,
I just came from long vacation and found most of the ext/mbstring
related tests failed. Looking into the problems I found a lot of places
where PHP crashes because of NULL pointer deference. Some other tests
produce incorrect output.
Have you tried to run "make test" with your patch?
Could you please fix the bugs you introduced or revert the patch.
I've attached a patch that fixes some of mbstring crashes.
Thanks. Dmitry.
On 12/19/2010 07:36 PM, Moriyoshi Koizumi wrote:
moriyoshi Sun, 19 Dec 2010 16:36:37 +0000
Revision: http://svn.php.net/viewvc?view=revision&revision=306453
Log:
* Refactor zend_multibyte facility.
Now mbstring.script_encoding is superseded by zend.script_encoding.
Changed paths:
<changed paths exceeded maximum size>
Index: ext/mbstring/mbstring.c
===================================================================
--- ext/mbstring/mbstring.c (revision 307402)
+++ ext/mbstring/mbstring.c (working copy)
@@ -2025,7 +2025,7 @@
return;
}
- encoding = MBSTRG(current_http_output_encoding);
+ encoding = MBSTRG(current_http_output_encoding) ? MBSTRG(current_http_output_encoding) : &mbfl_encoding_pass;
/* start phase only */
if ((arg_status & PHP_OUTPUT_HANDLER_START) != 0) {
@@ -2086,7 +2086,7 @@
/* feed the string */
mbfl_string_init(&string);
string.no_language = MBSTRG(language);
- string.no_encoding = MBSTRG(current_internal_encoding)->no_encoding;
+ string.no_encoding = MBSTRG(current_internal_encoding) ? MBSTRG(current_internal_encoding)->no_encoding : mbfl_no_encoding_pass;
string.val = (unsigned char *)arg_string;
string.len = arg_string_len;
mbfl_buffer_converter_feed(MBSTRG(outconv), &string);
@@ -2123,7 +2123,7 @@
string.no_language = MBSTRG(language);
if (enc_name == NULL) {
- string.no_encoding = MBSTRG(current_internal_encoding)->no_encoding;
+ string.no_encoding = MBSTRG(current_internal_encoding) ? MBSTRG(current_internal_encoding)->no_encoding : mbfl_no_encoding_pass;
} else {
string.no_encoding = mbfl_name2no_encoding(enc_name);
if (string.no_encoding == mbfl_no_encoding_invalid) {
@@ -2154,9 +2154,9 @@
mbfl_string_init(&haystack);
mbfl_string_init(&needle);
haystack.no_language = MBSTRG(language);
- haystack.no_encoding = MBSTRG(current_internal_encoding)->no_encoding;
+ haystack.no_encoding = MBSTRG(current_internal_encoding) ? MBSTRG(current_internal_encoding)->no_encoding : mbfl_no_encoding_pass;
needle.no_language = MBSTRG(language);
- needle.no_encoding = MBSTRG(current_internal_encoding)->no_encoding;
+ needle.no_encoding = MBSTRG(current_internal_encoding) ? MBSTRG(current_internal_encoding)->no_encoding : mbfl_no_encoding_pass;
offset = 0;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss|ls", (char **)&haystack.val, &haystack.len, (char **)&needle.val, &needle.len, &offset, &enc_name, &enc_name_len) == FAILURE) {
@@ -2221,9 +2221,9 @@
mbfl_string_init(&haystack);
mbfl_string_init(&needle);
haystack.no_language = MBSTRG(language);
- haystack.no_encoding = MBSTRG(current_internal_encoding)->no_encoding;
+ haystack.no_encoding = MBSTRG(current_internal_encoding) ? MBSTRG(current_internal_encoding)->no_encoding : mbfl_no_encoding_pass;
needle.no_language = MBSTRG(language);
- needle.no_encoding = MBSTRG(current_internal_encoding)->no_encoding;
+ needle.no_encoding = MBSTRG(current_internal_encoding) ? MBSTRG(current_internal_encoding)->no_encoding : mbfl_no_encoding_pass;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss|Zs", (char **)&haystack.val, &haystack.len, (char **)&needle.val, &needle.len, &zoffset, &enc_name, &enc_name_len) == FAILURE) {
RETURN_FALSE;
@@ -2310,7 +2310,7 @@
int n;
long offset;
mbfl_string haystack, needle;
- const char *from_encoding = MBSTRG(current_internal_encoding)->mime_name;
+ const char *from_encoding = MBSTRG(current_internal_encoding) ? MBSTRG(current_internal_encoding)->mime_name : NULL;
int from_encoding_len;
n = -1;
offset = 0;
@@ -2339,7 +2339,7 @@
int n;
long offset;
mbfl_string haystack, needle;
- const char *from_encoding = MBSTRG(current_internal_encoding)->mime_name;
+ const char *from_encoding = MBSTRG(current_internal_encoding) ? MBSTRG(current_internal_encoding)->mime_name : NULL;
int from_encoding_len;
n = -1;
offset = 0;
@@ -2371,9 +2371,9 @@
mbfl_string_init(&haystack);
mbfl_string_init(&needle);
haystack.no_language = MBSTRG(language);
- haystack.no_encoding = MBSTRG(current_internal_encoding)->no_encoding;
+ haystack.no_encoding = MBSTRG(current_internal_encoding) ? MBSTRG(current_internal_encoding)->no_encoding : mbfl_no_encoding_pass;
needle.no_language = MBSTRG(language);
- needle.no_encoding = MBSTRG(current_internal_encoding)->no_encoding;
+ needle.no_encoding = MBSTRG(current_internal_encoding) ? MBSTRG(current_internal_encoding)->no_encoding : mbfl_no_encoding_pass;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss|bs", (char **)&haystack.val, (int *)&haystack.len, (char **)&needle.val, (int *)&needle.len, &part, &enc_name, &enc_name_len) == FAILURE) {
RETURN_FALSE;
@@ -2429,9 +2429,9 @@
mbfl_string_init(&haystack);
mbfl_string_init(&needle);
haystack.no_language = MBSTRG(language);
- haystack.no_encoding = MBSTRG(current_internal_encoding)->no_encoding;
+ haystack.no_encoding = MBSTRG(current_internal_encoding) ? MBSTRG(current_internal_encoding)->no_encoding : mbfl_no_encoding_pass;
needle.no_language = MBSTRG(language);
- needle.no_encoding = MBSTRG(current_internal_encoding)->no_encoding;
+ needle.no_encoding = MBSTRG(current_internal_encoding) ? MBSTRG(current_internal_encoding)->no_encoding : mbfl_no_encoding_pass;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss|bs", (char **)&haystack.val, &haystack.len, (char **)&needle.val, &needle.len, &part, &enc_name, &enc_name_len) == FAILURE) {
RETURN_FALSE;
@@ -2484,13 +2484,13 @@
unsigned int from_encoding_len, len, mblen;
int n;
mbfl_string haystack, needle, result, *ret = NULL;
- const char *from_encoding = MBSTRG(current_internal_encoding)->mime_name;
+ const char *from_encoding = MBSTRG(current_internal_encoding) ? MBSTRG(current_internal_encoding)->mime_name : NULL;
mbfl_string_init(&haystack);
mbfl_string_init(&needle);
haystack.no_language = MBSTRG(language);
- haystack.no_encoding = MBSTRG(current_internal_encoding)->no_encoding;
+ haystack.no_encoding = MBSTRG(current_internal_encoding) ? MBSTRG(current_internal_encoding)->no_encoding : mbfl_no_encoding_pass;
needle.no_language = MBSTRG(language);
- needle.no_encoding = MBSTRG(current_internal_encoding)->no_encoding;
+ needle.no_encoding = MBSTRG(current_internal_encoding) ? MBSTRG(current_internal_encoding)->no_encoding : mbfl_no_encoding_pass;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss|bs", (char **)&haystack.val, &haystack.len, (char **)&needle.val, &needle.len, &part, &from_encoding, &from_encoding_len) == FAILURE) {
@@ -2542,13 +2542,13 @@
zend_bool part = 0;
int n, from_encoding_len, len, mblen;
mbfl_string haystack, needle, result, *ret = NULL;
- const char *from_encoding = MBSTRG(current_internal_encoding)->name;
+ const char *from_encoding = MBSTRG(current_internal_encoding) ? MBSTRG(current_internal_encoding)->name : NULL;
mbfl_string_init(&haystack);
mbfl_string_init(&needle);
haystack.no_language = MBSTRG(language);
- haystack.no_encoding = MBSTRG(current_internal_encoding)->no_encoding;
+ haystack.no_encoding = MBSTRG(current_internal_encoding) ? MBSTRG(current_internal_encoding)->no_encoding : mbfl_no_encoding_pass;
needle.no_language = MBSTRG(language);
- needle.no_encoding = MBSTRG(current_internal_encoding)->no_encoding;
+ needle.no_encoding = MBSTRG(current_internal_encoding) ? MBSTRG(current_internal_encoding)->no_encoding : mbfl_no_encoding_pass;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss|bs", (char **)&haystack.val, &haystack.len, (char **)&needle.val, &needle.len, &part, &from_encoding, &from_encoding_len) == FAILURE) {
@@ -2600,9 +2600,9 @@
mbfl_string_init(&haystack);
mbfl_string_init(&needle);
haystack.no_language = MBSTRG(language);
- haystack.no_encoding = MBSTRG(current_internal_encoding)->no_encoding;
+ haystack.no_encoding = MBSTRG(current_internal_encoding) ? MBSTRG(current_internal_encoding)->no_encoding : mbfl_no_encoding_pass;
needle.no_language = MBSTRG(language);
- needle.no_encoding = MBSTRG(current_internal_encoding)->no_encoding;
+ needle.no_encoding = MBSTRG(current_internal_encoding) ? MBSTRG(current_internal_encoding)->no_encoding : mbfl_no_encoding_pass;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss|s", (char **)&haystack.val, &haystack.len, (char **)&needle.val, &needle.len, &enc_name, &enc_name_len) == FAILURE) {
return;
@@ -2646,7 +2646,7 @@
mbfl_string_init(&string);
string.no_language = MBSTRG(language);
- string.no_encoding = MBSTRG(current_internal_encoding)->no_encoding;
+ string.no_encoding = MBSTRG(current_internal_encoding) ? MBSTRG(current_internal_encoding)->no_encoding : mbfl_no_encoding_pass;
if (argc == 4) {
string.no_encoding = mbfl_name2no_encoding(encoding);
@@ -2715,7 +2715,7 @@
mbfl_string_init(&string);
string.no_language = MBSTRG(language);
- string.no_encoding = MBSTRG(current_internal_encoding)->no_encoding;
+ string.no_encoding = MBSTRG(current_internal_encoding) ? MBSTRG(current_internal_encoding)->no_encoding : mbfl_no_encoding_pass;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sl|ls", (char **)&string.val, (int **)&string.len, &from, &len, &encoding, &encoding_len) == FAILURE) {
return;
@@ -2778,7 +2778,7 @@
mbfl_string_init(&string);
string.no_language = MBSTRG(language);
- string.no_encoding = MBSTRG(current_internal_encoding)->no_encoding;
+ string.no_encoding = MBSTRG(current_internal_encoding) ? MBSTRG(current_internal_encoding)->no_encoding : mbfl_no_encoding_pass;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|s", (char **)&string.val, &string.len, &enc_name, &enc_name_len) == FAILURE) {
return;
@@ -2817,9 +2817,9 @@
mbfl_string_init(&string);
mbfl_string_init(&marker);
string.no_language = MBSTRG(language);
- string.no_encoding = MBSTRG(current_internal_encoding)->no_encoding;
+ string.no_encoding = MBSTRG(current_internal_encoding) ? MBSTRG(current_internal_encoding)->no_encoding : mbfl_no_encoding_pass;
marker.no_language = MBSTRG(language);
- marker.no_encoding = MBSTRG(current_internal_encoding)->no_encoding;
+ marker.no_encoding = MBSTRG(current_internal_encoding) ? MBSTRG(current_internal_encoding)->no_encoding : mbfl_no_encoding_pass;
marker.val = NULL;
marker.len = 0;
@@ -2889,7 +2889,7 @@
/* initialize string */
mbfl_string_init(&string);
mbfl_string_init(&result);
- from_encoding = MBSTRG(current_internal_encoding);
+ from_encoding = MBSTRG(current_internal_encoding) ? MBSTRG(current_internal_encoding) : &mbfl_encoding_pass;
string.no_encoding = from_encoding->no_encoding;
string.no_language = MBSTRG(language);
string.val = (unsigned char *)input;
@@ -2910,7 +2910,7 @@
string.no_encoding = from_encoding->no_encoding;
} else {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to detect character encoding");
- from_encoding = mbfl_no_encoding_pass;
+ from_encoding = &mbfl_encoding_pass;
to_encoding = from_encoding;
string.no_encoding = from_encoding->no_encoding;
}
@@ -3024,7 +3024,7 @@
Returns a case-folded version of sourcestring */
PHP_FUNCTION(mb_convert_case)
{
- const char *from_encoding = MBSTRG(current_internal_encoding)->mime_name;
+ const char *from_encoding = MBSTRG(current_internal_encoding) ? MBSTRG(current_internal_encoding)->mime_name : "pass";
char *str;
int str_len, from_encoding_len;
long case_mode = 0;
@@ -3049,7 +3049,7 @@
*/
PHP_FUNCTION(mb_strtoupper)
{
- const char *from_encoding = MBSTRG(current_internal_encoding)->mime_name;
+ const char *from_encoding = MBSTRG(current_internal_encoding) ? MBSTRG(current_internal_encoding)->mime_name : "pass";
char *str;
int str_len, from_encoding_len;
char *newstr;
@@ -3073,7 +3073,7 @@
*/
PHP_FUNCTION(mb_strtolower)
{
- const char *from_encoding = MBSTRG(current_internal_encoding)->mime_name;
+ const char *from_encoding = MBSTRG(current_internal_encoding) ? MBSTRG(current_internal_encoding)->mime_name : "pass";
char *str;
int str_len, from_encoding_len;
char *newstr;
@@ -3230,7 +3230,7 @@
mbfl_string_init(&string);
string.no_language = MBSTRG(language);
- string.no_encoding = MBSTRG(current_internal_encoding)->no_encoding;
+ string.no_encoding = MBSTRG(current_internal_encoding) ? MBSTRG(current_internal_encoding)->no_encoding : mbfl_no_encoding_pass;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|sssl", (char **)&string.val, &string.len, &charset_name, &charset_name_len, &trans_enc_name, &trans_enc_name_len, &linefeed, &linefeed_len, &indent) == FAILURE) {
return;
@@ -3279,14 +3279,14 @@
mbfl_string_init(&string);
string.no_language = MBSTRG(language);
- string.no_encoding = MBSTRG(current_internal_encoding)->no_encoding;
+ string.no_encoding = MBSTRG(current_internal_encoding) ? MBSTRG(current_internal_encoding)->no_encoding : mbfl_no_encoding_pass;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", (char **)&string.val, &string.len) == FAILURE) {
return;
}
mbfl_string_init(&result);
- ret = mbfl_mime_header_decode(&string, &result, MBSTRG(current_internal_encoding)->no_encoding);
+ ret = mbfl_mime_header_decode(&string, &result, MBSTRG(current_internal_encoding) ? MBSTRG(current_internal_encoding)->no_encoding : mbfl_no_encoding_pass);
if (ret != NULL) {
RETVAL_STRINGL((char *)ret->val, ret->len, 0); /* the string is already strdup()'ed */
} else {
@@ -3308,7 +3308,7 @@
mbfl_string_init(&string);
string.no_language = MBSTRG(language);
- string.no_encoding = MBSTRG(current_internal_encoding)->no_encoding;
+ string.no_encoding = MBSTRG(current_internal_encoding) ? MBSTRG(current_internal_encoding)->no_encoding : mbfl_no_encoding_pass;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|ss", (char **)&string.val, &string.len, &optstr, &optstr_len, &encname, &encname_len) == FAILURE) {
return;
@@ -3432,7 +3432,7 @@
mbfl_string_init(&string);
mbfl_string_init(&result);
from_encoding = MBSTRG(current_internal_encoding);
- string.no_encoding = from_encoding->no_encoding;
+ string.no_encoding = from_encoding ? from_encoding->no_encoding : mbfl_no_encoding_pass;
string.no_language = MBSTRG(language);
/* pre-conversion encoding */
@@ -3448,7 +3448,7 @@
break;
}
if (elistsz <= 0) {
- from_encoding = mbfl_no_encoding_pass;
+ from_encoding = &mbfl_encoding_pass;
} else if (elistsz == 1) {
from_encoding = *elist;
} else {
@@ -3517,7 +3517,7 @@
if (!from_encoding) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to detect encoding");
- from_encoding = mbfl_no_encoding_pass;
+ from_encoding = &mbfl_encoding_pass;
}
}
if (elist != NULL) {
@@ -3525,7 +3525,7 @@
}
/* create converter */
convd = NULL;
- if (from_encoding != mbfl_no_encoding_pass) {
+ if (from_encoding && from_encoding != &mbfl_encoding_pass) {
convd = mbfl_buffer_converter_new2(from_encoding, to_encoding, 0);
if (convd == NULL) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to create converter");
@@ -3636,7 +3636,7 @@
mbfl_string_init(&string);
string.no_language = MBSTRG(language);
- string.no_encoding = MBSTRG(current_internal_encoding)->no_encoding;
+ string.no_encoding = MBSTRG(current_internal_encoding) ? MBSTRG(current_internal_encoding)->no_encoding : mbfl_no_encoding_pass;
string.val = (unsigned char *)str;
string.len = str_len;
@@ -4089,7 +4089,7 @@
orig_str.no_language = MBSTRG(language);
orig_str.val = (unsigned char *)subject;
orig_str.len = subject_len;
- orig_str.no_encoding = MBSTRG(current_internal_encoding)->no_encoding;
+ orig_str.no_encoding = MBSTRG(current_internal_encoding) ? MBSTRG(current_internal_encoding)->no_encoding : mbfl_no_encoding_pass;
if (orig_str.no_encoding == mbfl_no_encoding_invalid || orig_str.no_encoding == mbfl_no_encoding_pass) {
const mbfl_encoding *encoding = mbfl_identify_encoding2(&orig_str, MBSTRG(current_detect_order_list), MBSTRG(current_detect_order_list_size), MBSTRG(strict_detection));
orig_str.no_encoding = encoding ? encoding->no_encoding: mbfl_no_encoding_invalid;
@@ -4108,7 +4108,7 @@
orig_str.no_language = MBSTRG(language);
orig_str.val = (unsigned char *)message;
orig_str.len = (unsigned int)message_len;
- orig_str.no_encoding = MBSTRG(current_internal_encoding)->no_encoding;
+ orig_str.no_encoding = MBSTRG(current_internal_encoding) ? MBSTRG(current_internal_encoding)->no_encoding : mbfl_no_encoding_pass;
if (orig_str.no_encoding == mbfl_no_encoding_invalid || orig_str.no_encoding == mbfl_no_encoding_pass) {
const mbfl_encoding *encoding = mbfl_identify_encoding2(&orig_str, MBSTRG(current_detect_order_list), MBSTRG(current_detect_order_list_size), MBSTRG(strict_detection));
@@ -4235,13 +4235,13 @@
if (!typ || !strcasecmp("all", typ)) {
array_init(return_value);
if (MBSTRG(current_internal_encoding)) {
- add_assoc_string(return_value, "internal_encoding", (char *)MBSTRG(current_internal_encoding)->name, 1);
+ add_assoc_string(return_value, "internal_encoding", (char *)(MBSTRG(current_internal_encoding) ? MBSTRG(current_internal_encoding)->name : "pass"), 1);
}
if (MBSTRG(http_input_identify)) {
- add_assoc_string(return_value, "http_input", (char *)MBSTRG(http_input_identify)->name, 1);
+ add_assoc_string(return_value, "http_input", (char *)(MBSTRG(http_input_identify) ? MBSTRG(http_input_identify)->name : "pass"), 1);
}
if (MBSTRG(current_http_output_encoding)) {
- add_assoc_string(return_value, "http_output", (char *)MBSTRG(current_http_output_encoding)->name, 1);
+ add_assoc_string(return_value, "http_output", (char *)(MBSTRG(current_http_output_encoding) ? MBSTRG(current_http_output_encoding)->name : "pass"), 1);
}
if ((name = (char *)zend_ini_string("mbstring.http_output_conv_mimetypes", sizeof("mbstring.http_output_conv_mimetypes"), 0)) != NULL) {
add_assoc_string(return_value, "http_output_conv_mimetypes", name, 1);
@@ -4309,15 +4309,15 @@
}
} else if (!strcasecmp("internal_encoding", typ)) {
if (MBSTRG(current_internal_encoding)) {
- RETVAL_STRING((char *)MBSTRG(current_internal_encoding)->name, 1);
+ RETVAL_STRING((char *)(MBSTRG(current_internal_encoding) ? MBSTRG(current_internal_encoding)->name : "pass"), 1);
}
} else if (!strcasecmp("http_input", typ)) {
if (MBSTRG(http_input_identify)) {
- RETVAL_STRING((char *)MBSTRG(http_input_identify)->name, 1);
+ RETVAL_STRING((char *)(MBSTRG(http_input_identify) ? MBSTRG(http_input_identify)->name : "pass"), 1);
}
} else if (!strcasecmp("http_output", typ)) {
if (MBSTRG(current_http_output_encoding)) {
- RETVAL_STRING((char *)MBSTRG(current_http_output_encoding)->name, 1);
+ RETVAL_STRING((char *)(MBSTRG(current_http_output_encoding) ? MBSTRG(current_http_output_encoding)->name : "pass"), 1);
}
} else if (!strcasecmp("http_output_conv_mimetypes", typ)) {
if ((name = (char *)zend_ini_string("mbstring.http_output_conv_mimetypes", sizeof("mbstring.http_output_conv_mimetypes"), 0)) != NULL) {
@@ -4605,7 +4605,7 @@
from_encoding = MBSTRG(http_input_identify);
}
- if (from_encoding == mbfl_no_encoding_pass) {
+ if (!from_encoding && from_encoding == &mbfl_encoding_pass) {
return 0;
}
@@ -4718,9 +4718,9 @@
mbfl_string_init(&haystack);
mbfl_string_init(&needle);
haystack.no_language = MBSTRG(language);
- haystack.no_encoding = MBSTRG(current_internal_encoding)->no_encoding;
+ haystack.no_encoding = MBSTRG(current_internal_encoding) ? MBSTRG(current_internal_encoding)->no_encoding : mbfl_no_encoding_pass;
needle.no_language = MBSTRG(language);
- needle.no_encoding = MBSTRG(current_internal_encoding)->no_encoding;
+ needle.no_encoding = MBSTRG(current_internal_encoding) ? MBSTRG(current_internal_encoding)->no_encoding : mbfl_no_encoding_pass;
do {
size_t len = 0;
Index: ext/mbstring/mb_gpc.c
===================================================================
--- ext/mbstring/mb_gpc.c (revision 307402)
+++ ext/mbstring/mb_gpc.c (working copy)
@@ -205,9 +205,9 @@
mbfl_encoding_detector *identd = NULL;
mbfl_buffer_converter *convd = NULL;
- mbfl_string_init_set(&string, info->to_language, info->to_encoding->no_encoding);
- mbfl_string_init_set(&resvar, info->to_language, info->to_encoding->no_encoding);
- mbfl_string_init_set(&resval, info->to_language, info->to_encoding->no_encoding);
+ mbfl_string_init_set(&string, info->to_language, info->to_encoding ? info->to_encoding->no_encoding : mbfl_no_encoding_pass);
+ mbfl_string_init_set(&resvar, info->to_language, info->to_encoding ? info->to_encoding->no_encoding : mbfl_no_encoding_pass);
+ mbfl_string_init_set(&resval, info->to_language, info->to_encoding ? info->to_encoding->no_encoding : mbfl_no_encoding_pass);
if (!res || *res == '\0') {
goto out;
@@ -282,7 +282,7 @@
if (info->report_errors) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to detect encoding");
}
- from_encoding = mbfl_no_encoding_pass;
+ from_encoding = &mbfl_encoding_pass;
}
}
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php