diff options
Diffstat (limited to 'ext')
| -rw-r--r-- | ext/mbstring/mbstring.c | 15 | ||||
| -rw-r--r-- | ext/mbstring/php_mbregex.c | 10 | ||||
| -rw-r--r-- | ext/mbstring/tests/bug26639.phpt | 54 | ||||
| -rw-r--r-- | ext/mbstring/tests/mb_http_output.phpt | 4 | ||||
| -rw-r--r-- | ext/mbstring/tests/mb_strpos.phpt | 8 | ||||
| -rw-r--r-- | ext/mbstring/tests/mb_strpos_error1.phpt | 4 | ||||
| -rw-r--r-- | ext/mbstring/tests/mb_strpos_variation1.phpt | 2 | ||||
| -rw-r--r-- | ext/mbstring/tests/mb_strpos_variation2.phpt | 2 | ||||
| -rw-r--r-- | ext/mbstring/tests/mb_strpos_variation3.phpt | 14 | ||||
| -rw-r--r-- | ext/mbstring/tests/mb_strpos_variation4.phpt | 4 | ||||
| -rw-r--r-- | ext/mbstring/tests/mb_strrpos_error1.phpt | 4 | ||||
| -rw-r--r-- | ext/mbstring/tests/mb_strrpos_variation1.phpt | 4 | ||||
| -rw-r--r-- | ext/mbstring/tests/mb_strrpos_variation2.phpt | 2 | ||||
| -rw-r--r-- | ext/mbstring/tests/mb_strrpos_variation4.phpt | 4 |
14 files changed, 71 insertions, 60 deletions
diff --git a/ext/mbstring/mbstring.c b/ext/mbstring/mbstring.c index 0b963f9f99..533e064a67 100644 --- a/ext/mbstring/mbstring.c +++ b/ext/mbstring/mbstring.c @@ -2047,6 +2047,7 @@ PHP_FUNCTION(mb_parse_str) if (track_vars_array != NULL) { /* Clear out the array */ + ZVAL_DEREF(track_vars_array); zval_dtor(track_vars_array); array_init(track_vars_array); } @@ -3173,7 +3174,9 @@ PHP_FUNCTION(mb_strtoupper) if (newstr) { //??? - RETURN_STRINGL(newstr, ret_len); + RETVAL_STRINGL(newstr, ret_len); + efree(newstr); + return; } RETURN_FALSE; } @@ -3198,7 +3201,9 @@ PHP_FUNCTION(mb_strtolower) if (newstr) { //??? - RETURN_STRINGL(newstr, ret_len); + RETVAL_STRINGL(newstr, ret_len); + efree(newstr); + return; } RETURN_FALSE; } @@ -3378,6 +3383,7 @@ PHP_FUNCTION(mb_encode_mimeheader) if (ret != NULL) { //????? RETVAL_STRINGL((char *)ret->val, ret->len); /* the string is already strdup()'ed */ + efree(ret->val); } else { RETVAL_FALSE; } @@ -3403,6 +3409,7 @@ PHP_FUNCTION(mb_decode_mimeheader) if (ret != NULL) { //???? RETVAL_STRINGL((char *)ret->val, ret->len); /* the string is already strdup()'ed */ + efree(ret->val); } else { RETVAL_FALSE; } @@ -4365,7 +4372,7 @@ PHP_FUNCTION(mb_get_info) if (MBSTRG(current_http_output_encoding)) { add_assoc_string(return_value, "http_output", (char *)MBSTRG(current_http_output_encoding)->name, 1); } - if ((name = (char *)zend_ini_string("mbstring.http_output_conv_mimetypes", sizeof("mbstring.http_output_conv_mimetypes"), 0)) != NULL) { + if ((name = (char *)zend_ini_string("mbstring.http_output_conv_mimetypes", sizeof("mbstring.http_output_conv_mimetypes") - 1, 0)) != NULL) { add_assoc_string(return_value, "http_output_conv_mimetypes", name, 1); } add_assoc_long(return_value, "func_overload", MBSTRG(func_overload)); @@ -4440,7 +4447,7 @@ PHP_FUNCTION(mb_get_info) RETVAL_STRING((char *)MBSTRG(current_http_output_encoding)->name); } } 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) { + if ((name = (char *)zend_ini_string("mbstring.http_output_conv_mimetypes", sizeof("mbstring.http_output_conv_mimetypes") - 1, 0)) != NULL) { RETVAL_STRING(name); } } else if (!strcasecmp("func_overload", typ)) { diff --git a/ext/mbstring/php_mbregex.c b/ext/mbstring/php_mbregex.c index 8d84e41054..e9307df5d7 100644 --- a/ext/mbstring/php_mbregex.c +++ b/ext/mbstring/php_mbregex.c @@ -740,9 +740,11 @@ static void _php_mb_regex_ereg_exec(INTERNAL_FUNCTION_PARAMETERS, int icase) match_len = 1; str = string; if (array != NULL) { - match_len = regs->end[0] - regs->beg[0]; + ZVAL_DEREF(array); zval_dtor(array); array_init(array); + + match_len = regs->end[0] - regs->beg[0]; for (i = 0; i < regs->num_regs; i++) { beg = regs->beg[i]; end = regs->end[i]; @@ -1011,9 +1013,11 @@ static void _php_mb_regex_ereg_replace_exec(INTERNAL_FUNCTION_PARAMETERS, OnigOp if (err <= -2) { smart_str_free(&out_buf); RETVAL_FALSE; - } else { - smart_str_appendc(&out_buf, '\0'); + } else if (out_buf.s) { + smart_str_0(&out_buf); RETVAL_STR(out_buf.s); + } else { + RETVAL_EMPTY_STRING(); } } /* }}} */ diff --git a/ext/mbstring/tests/bug26639.phpt b/ext/mbstring/tests/bug26639.phpt index a87e912ba6..3f5b8e5acd 100644 --- a/ext/mbstring/tests/bug26639.phpt +++ b/ext/mbstring/tests/bug26639.phpt @@ -70,54 +70,54 @@ unset($a); unset($b); unset($c); ?> ---EXPECT-- -string(10) "あいうえお" refcount(2) -string(10) "、「、、、ヲ、ィ、ェ" refcount(2) -string(10) "、「、、、ヲ、ィ、ェ" refcount(1) -string(10) "、「、、、ヲ、ィ、ェ" refcount(1) -array(1) refcount(2){ +--EXPECTF-- +string(10) "あいうえお" refcount(%d) +string(10) "、「、、、ヲ、ィ、ェ" refcount(%d) +string(10) "、「、、、ヲ、ィ、ェ" refcount(%d) +string(10) "、「、、、ヲ、ィ、ェ" refcount(%d) +array(1) refcount(%d){ [0]=> - string(10) "あいうえお" refcount(2) + string(10) "あいうえお" refcount(%d) } -array(1) refcount(2){ +array(1) refcount(%d){ [0]=> - string(10) "、「、、、ヲ、ィ、ェ" refcount(1) + string(10) "、「、、、ヲ、ィ、ェ" refcount(%d) } -array(1) refcount(2){ +array(1) refcount(%d){ [0]=> - &string(10) "あいうえお" refcount(2) + &string(10) "あいうえお" refcount(%d) } -array(1) refcount(2){ +array(1) refcount(%d){ [0]=> - string(10) "、「、、、ヲ、ィ、ェ" refcount(1) + string(10) "、「、、、ヲ、ィ、ェ" refcount(%d) } -array(1) refcount(1){ +array(1) refcount(%d){ [0]=> - string(10) "、「、、、ヲ、ィ、ェ" refcount(2) + string(10) "、「、、、ヲ、ィ、ェ" refcount(%d) } -array(1) refcount(1){ +array(1) refcount(%d){ [0]=> - string(10) "、「、、、ヲ、ィ、ェ" refcount(2) + string(10) "、「、、、ヲ、ィ、ェ" refcount(%d) } -array(1) refcount(1){ +array(1) refcount(%d){ [0]=> - string(10) "、「、、、ヲ、ィ、ェ" refcount(2) + string(10) "、「、、、ヲ、ィ、ェ" refcount(%d) } -array(1) refcount(1){ +array(1) refcount(%d){ [0]=> - string(10) "、「、、、ヲ、ィ、ェ" refcount(2) + string(10) "、「、、、ヲ、ィ、ェ" refcount(%d) } -array(1) refcount(3){ +array(1) refcount(%d){ [0]=> - array(1) refcount(1){ + array(1) refcount(%d){ [0]=> - string(10) "あいうえお" refcount(1) + string(10) "あいうえお" refcount(%d) } } -array(1) refcount(2){ +array(1) refcount(%d){ [0]=> - array(1) refcount(1){ + array(1) refcount(%d){ [0]=> - string(10) "、「、、、ヲ、ィ、ェ" refcount(1) + string(10) "、「、、、ヲ、ィ、ェ" refcount(%d) } } diff --git a/ext/mbstring/tests/mb_http_output.phpt b/ext/mbstring/tests/mb_http_output.phpt index 6f149bfc9f..a6cac3fb35 100644 --- a/ext/mbstring/tests/mb_http_output.phpt +++ b/ext/mbstring/tests/mb_http_output.phpt @@ -49,12 +49,12 @@ $enc = mb_http_output(); print "$enc\n"; $r = mb_http_output($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_http_output(); print "$enc\n"; $r = mb_http_output($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_http_output(); print "$enc\n"; diff --git a/ext/mbstring/tests/mb_strpos.phpt b/ext/mbstring/tests/mb_strpos.phpt index 1d613e9c78..e1222ca6dd 100644 --- a/ext/mbstring/tests/mb_strpos.phpt +++ b/ext/mbstring/tests/mb_strpos.phpt @@ -103,13 +103,13 @@ $r = mb_strpos($euc_jp, b"\n"); echo "== INVALID PARAMETER TEST ==\n"; $r = mb_strpos($euc_jp,'','EUC-JP'); -($r === FALSE) ? print("OK_NULL\n") : print("NG_NULL\n"); +($r === NULL) ? print("OK_NULL\n") : print("NG_NULL\n"); $r = mb_strpos($euc_jp, $t_ary, 'EUC-JP'); -($r === FALSE) ? print("OK_ARRAY\n") : print("NG_ARRAY\n"); +($r === NULL) ? print("OK_ARRAY\n") : print("NG_ARRAY\n"); $r = mb_strpos($euc_jp, $t_obj, 'EUC-JP'); -($r === FALSE) ? print("OK_OBJECT\n") : print("NG_OBJECT\n"); +($r === NULL) ? print("OK_OBJECT\n") : print("NG_OBJECT\n"); $r = mb_strpos($euc_jp, $t_obj, 'BAD_ENCODING'); -($r === FALSE) ? print("OK_BAD_ENCODING\n") : print("NG_BAD_ENCODING\n"); +($r === NULL) ? print("OK_BAD_ENCODING\n") : print("NG_BAD_ENCODING\n"); ?> diff --git a/ext/mbstring/tests/mb_strpos_error1.phpt b/ext/mbstring/tests/mb_strpos_error1.phpt index 8f5ba85423..ef0cbafeff 100644 --- a/ext/mbstring/tests/mb_strpos_error1.phpt +++ b/ext/mbstring/tests/mb_strpos_error1.phpt @@ -41,10 +41,10 @@ echo "Done"; -- Testing mb_strpos() function with more than expected no. of arguments -- Warning: mb_strpos() expects at most 4 parameters, 5 given in %s on line %d -bool(false) +NULL -- Testing mb_strpos() function with less than expected no. of arguments -- Warning: mb_strpos() expects at least 2 parameters, 1 given in %s on line %d -bool(false) +NULL Done diff --git a/ext/mbstring/tests/mb_strpos_variation1.phpt b/ext/mbstring/tests/mb_strpos_variation1.phpt index d665f8f7ef..0684724b5c 100644 --- a/ext/mbstring/tests/mb_strpos_variation1.phpt +++ b/ext/mbstring/tests/mb_strpos_variation1.phpt @@ -178,5 +178,5 @@ bool(false) -- Iteration 24 -- Warning: mb_strpos() expects parameter 1 to be string, resource given in %s on line %d -bool(false) +NULL Done diff --git a/ext/mbstring/tests/mb_strpos_variation2.phpt b/ext/mbstring/tests/mb_strpos_variation2.phpt index d6feb49231..486b2bb3e5 100644 --- a/ext/mbstring/tests/mb_strpos_variation2.phpt +++ b/ext/mbstring/tests/mb_strpos_variation2.phpt @@ -194,5 +194,5 @@ bool(false) -- Iteration 24 -- Warning: mb_strpos() expects parameter 2 to be string, resource given in %s on line %d -bool(false) +NULL Done diff --git a/ext/mbstring/tests/mb_strpos_variation3.phpt b/ext/mbstring/tests/mb_strpos_variation3.phpt index 65572b5f04..ff69b8c6f8 100644 --- a/ext/mbstring/tests/mb_strpos_variation3.phpt +++ b/ext/mbstring/tests/mb_strpos_variation3.phpt @@ -162,32 +162,32 @@ int(8) -- Iteration 16 -- Warning: mb_strpos() expects parameter 3 to be long, string given in %s on line %d -bool(false) +NULL -- Iteration 17 -- Warning: mb_strpos() expects parameter 3 to be long, string given in %s on line %d -bool(false) +NULL -- Iteration 18 -- Warning: mb_strpos() expects parameter 3 to be long, string given in %s on line %d -bool(false) +NULL -- Iteration 19 -- Warning: mb_strpos() expects parameter 3 to be long, string given in %s on line %d -bool(false) +NULL -- Iteration 20 -- Warning: mb_strpos() expects parameter 3 to be long, string given in %s on line %d -bool(false) +NULL -- Iteration 21 -- Warning: mb_strpos() expects parameter 3 to be long, object given in %s on line %d -bool(false) +NULL -- Iteration 22 -- int(8) @@ -198,5 +198,5 @@ int(8) -- Iteration 24 -- Warning: mb_strpos() expects parameter 3 to be long, resource given in %s on line %d -bool(false) +NULL Done diff --git a/ext/mbstring/tests/mb_strpos_variation4.phpt b/ext/mbstring/tests/mb_strpos_variation4.phpt index 0fca8bb1f2..4051646ae4 100644 --- a/ext/mbstring/tests/mb_strpos_variation4.phpt +++ b/ext/mbstring/tests/mb_strpos_variation4.phpt @@ -218,5 +218,5 @@ bool(false) -- Iteration 24 -- Warning: mb_strpos() expects parameter 4 to be string, resource given in %s on line %d -bool(false) -Done
\ No newline at end of file +NULL +Done diff --git a/ext/mbstring/tests/mb_strrpos_error1.phpt b/ext/mbstring/tests/mb_strrpos_error1.phpt index 15228fec81..892599acc2 100644 --- a/ext/mbstring/tests/mb_strrpos_error1.phpt +++ b/ext/mbstring/tests/mb_strrpos_error1.phpt @@ -41,10 +41,10 @@ echo "Done"; -- Testing mb_strrpos() function with more than expected no. of arguments -- Warning: mb_strrpos() expects at most 4 parameters, 5 given in %s on line %d -bool(false) +NULL -- Testing mb_strrpos() function with less than expected no. of arguments -- Warning: mb_strrpos() expects at least 2 parameters, 1 given in %s on line %d -bool(false) +NULL Done diff --git a/ext/mbstring/tests/mb_strrpos_variation1.phpt b/ext/mbstring/tests/mb_strrpos_variation1.phpt index 2d2db9003c..8b1713f9f1 100644 --- a/ext/mbstring/tests/mb_strrpos_variation1.phpt +++ b/ext/mbstring/tests/mb_strrpos_variation1.phpt @@ -177,5 +177,5 @@ bool(false) -- Iteration 24 -- Warning: mb_strrpos() expects parameter 1 to be string, resource given in %s on line %d -bool(false) -Done
\ No newline at end of file +NULL +Done diff --git a/ext/mbstring/tests/mb_strrpos_variation2.phpt b/ext/mbstring/tests/mb_strrpos_variation2.phpt index 1566b5cb5f..c2855e0f81 100644 --- a/ext/mbstring/tests/mb_strrpos_variation2.phpt +++ b/ext/mbstring/tests/mb_strrpos_variation2.phpt @@ -179,5 +179,5 @@ bool(false) -- Iteration 24 -- Warning: mb_strrpos() expects parameter 2 to be string, resource given in %s on line %d -bool(false) +NULL Done diff --git a/ext/mbstring/tests/mb_strrpos_variation4.phpt b/ext/mbstring/tests/mb_strrpos_variation4.phpt index 198ce8fc70..9d9a5f2358 100644 --- a/ext/mbstring/tests/mb_strrpos_variation4.phpt +++ b/ext/mbstring/tests/mb_strrpos_variation4.phpt @@ -218,5 +218,5 @@ bool(false) -- Iteration 24 -- Warning: mb_strrpos() expects parameter 4 to be string, resource given in %s on line %d -bool(false) -Done
\ No newline at end of file +NULL +Done |
