diff --git a/ext/mbstring/php_mbregex.c b/ext/mbstring/php_mbregex.c index 7e9756fa158cc..06d469047ffc5 100644 --- a/ext/mbstring/php_mbregex.c +++ b/ext/mbstring/php_mbregex.c @@ -704,6 +704,11 @@ static void _php_mb_regex_ereg_exec(INTERNAL_FUNCTION_PARAMETERS, int icase) RETURN_FALSE; } + if (array != NULL) { + zval_dtor(array); + array_init(array); + } + options = MBREX(regex_default_options); if (icase) { options |= ONIG_OPTION_IGNORECASE; @@ -743,8 +748,6 @@ static void _php_mb_regex_ereg_exec(INTERNAL_FUNCTION_PARAMETERS, int icase) str = string; if (array != NULL) { match_len = regs->end[0] - regs->beg[0]; - zval_dtor(array); - array_init(array); for (i = 0; i < regs->num_regs; i++) { beg = regs->beg[i]; end = regs->end[i]; diff --git a/ext/mbstring/tests/bug43994.phpt b/ext/mbstring/tests/bug43994.phpt index 8fdb904a7cc72..e9a11d054e377 100644 --- a/ext/mbstring/tests/bug43994.phpt +++ b/ext/mbstring/tests/bug43994.phpt @@ -8,12 +8,12 @@ function_exists('mb_ereg') or die("skip mb_ereg() is not available in this build --FILE-- ---EXPECTF-- +--EXPECTF-- -- Iteration 1 -- Without $regs arg: @@ -49,7 +49,8 @@ With $regs arg: Warning: mb_ereg(): empty pattern in %s on line %d bool(false) -NULL +array(0) { +} -- Iteration 2 -- Without $regs arg: @@ -60,7 +61,8 @@ With $regs arg: Warning: mb_ereg(): empty pattern in %s on line %d bool(false) -NULL +array(0) { +} -- Iteration 3 -- Without $regs arg: @@ -71,7 +73,8 @@ With $regs arg: Warning: mb_ereg(): empty pattern in %s on line %d bool(false) -NULL +array(0) { +} -- Iteration 4 -- Without $regs arg: @@ -82,7 +85,8 @@ With $regs arg: Warning: mb_ereg(): empty pattern in %s on line %d bool(false) -NULL +array(0) { +} -- Iteration 5 -- Without $regs arg: @@ -93,7 +97,8 @@ With $regs arg: Warning: mb_ereg(): empty pattern in %s on line %d bool(false) -NULL +array(0) { +} -- Iteration 6 -- Without $regs arg: @@ -104,7 +109,8 @@ With $regs arg: Warning: mb_ereg(): empty pattern in %s on line %d bool(false) -NULL +array(0) { +} -- Iteration 7 -- Without $regs arg: @@ -115,7 +121,8 @@ With $regs arg: Warning: mb_ereg(): empty pattern in %s on line %d bool(false) -NULL +array(0) { +} -- Iteration 8 -- Without $regs arg: @@ -126,4 +133,5 @@ With $regs arg: Warning: mb_ereg(): empty pattern in %s on line %d bool(false) -NULL +array(0) { +} diff --git a/ext/mbstring/tests/mb_ereg1.phpt b/ext/mbstring/tests/mb_ereg1.phpt index 57884c0e023da..59ef788a77a5c 100644 --- a/ext/mbstring/tests/mb_ereg1.phpt +++ b/ext/mbstring/tests/mb_ereg1.phpt @@ -19,7 +19,7 @@ foreach ($a as $args) { } ?> ===DONE=== ---EXPECTF-- +--EXPECTF-- bool(false) array(3) { [0]=> @@ -27,7 +27,8 @@ array(3) { [1]=> int(2) [2]=> - int(3) + array(0) { + } } Warning: mb_ereg(): empty pattern in %s on line %d @@ -38,7 +39,8 @@ array(3) { [1]=> string(0) "" [2]=> - string(0) "" + array(0) { + } } Notice: Array to string conversion in %s on line %d @@ -50,7 +52,8 @@ array(3) { [1]=> int(1) [2]=> - string(0) "" + array(0) { + } } Warning: mb_ereg() expects parameter 2 to be string, array given in %s on line %d diff --git a/ext/mbstring/tests/mb_ereg_basic.phpt b/ext/mbstring/tests/mb_ereg_basic.phpt index db282233934b4..194f7304b2e61 100644 --- a/ext/mbstring/tests/mb_ereg_basic.phpt +++ b/ext/mbstring/tests/mb_ereg_basic.phpt @@ -1,5 +1,5 @@ --TEST-- -Test mb_ereg() function : basic functionality +Test mb_ereg() function : basic functionality --SKIPIF--