]> granicus.if.org Git - php/commitdiff
Fixed segfault due to incompleted refactoring
authorXinchen Hui <laruence@gmail.com>
Mon, 24 Mar 2014 09:14:29 +0000 (17:14 +0800)
committerXinchen Hui <laruence@gmail.com>
Mon, 24 Mar 2014 09:14:29 +0000 (17:14 +0800)
ext/mbstring/mbstring.c
ext/mbstring/tests/mb_internal_encoding.phpt

index f9d51e531e50f86340f89d33978426ed36573076..2ffc31cc0cafcb8ce615b8c3fe69968863bb6b06 100644 (file)
@@ -898,7 +898,7 @@ static const zend_encoding *php_mb_zend_encoding_detector(const unsigned char *a
        return (const zend_encoding *) mbfl_identify_encoding2(&string, (const mbfl_encoding **)list, list_size, 0);
 }
 
-static size_t php_mb_zend_encoding_converter(zend_string **to, zend_string *from, const zend_encoding *encoding_to, const zend_encoding *encoding_from TSRMLS_DC)
+static size_t php_mb_zend_encoding_converter(unsigned char **to, size_t *to_length, const unsigned char *from, size_t from_length, const zend_encoding *encoding_to, const zend_encoding *encoding_from TSRMLS_DC)
 {
        mbfl_string string, result;
        mbfl_buffer_converter *convd;
@@ -910,8 +910,8 @@ static size_t php_mb_zend_encoding_converter(zend_string **to, zend_string *from
        mbfl_string_init(&result);
        string.no_encoding = ((const mbfl_encoding*)encoding_from)->no_encoding;
        string.no_language = MBSTRG(language);
-       string.val = (unsigned char*)from->val;
-       string.len = from->len;
+       string.val = (unsigned char*)from;
+       string.len = from_length;
 
        /* initialize converter */
        convd = mbfl_buffer_converter_new2((const mbfl_encoding *)encoding_from, (const mbfl_encoding *)encoding_to, string.len);
@@ -934,7 +934,8 @@ static size_t php_mb_zend_encoding_converter(zend_string **to, zend_string *from
                return (size_t)-1;
        }       
 
-       *to = STR_INIT(result.val, result.len, 0);
+       *to = result.val;
+       *to_length = result.len;
 
        mbfl_buffer_converter_delete(convd);
 
index e1b99c3ba235cb7929a5998ece3253d6c73dc536..acb3c6fbb6b22301524c75d862a4e460f7a8632e 100644 (file)
@@ -32,17 +32,17 @@ print "== INVALID PARAMETER ==\n";
 
 // Note: Other than string type, PHP raises Warning
 $r = mb_internal_encoding('BAD');
-($r === FALSE) ? print "OK_BAD_SET\n" : print "NG_BAD_SET\n";
+($r === false) ? print "OK_BAD_SET\n" : print "NG_BAD_SET\n";
 $enc = mb_internal_encoding();
 print "$enc\n";
 
 $r = mb_internal_encoding($t_ary);
-($r === FALSE) ? print "OK_BAD_ARY_SET\n" : print "NG_BAD_ARY_SET\n";
+($r === NULL) ? print "OK_BAD_ARY_SET\n" : print "NG_BAD_ARY_SET\n";
 $enc = mb_internal_encoding();
 print "$enc\n";
 
 $r = mb_internal_encoding($t_obj);
-($r === FALSE) ? print "OK_BAD_OBJ_SET\n" : print "NG_BAD_OBJ_SET\n";
+($r === NULL) ? print "OK_BAD_OBJ_SET\n" : print "NG_BAD_OBJ_SET\n";
 $enc = mb_internal_encoding();
 print "$enc\n";