diff options
-rw-r--r-- | ext/pcre/php_pcre.c | 1 | ||||
-rw-r--r-- | ext/pcre/tests/preg_replace_callback3.phpt | 71 |
2 files changed, 72 insertions, 0 deletions
diff --git a/ext/pcre/php_pcre.c b/ext/pcre/php_pcre.c index 96a28c1da1..5120fb5b49 100644 --- a/ext/pcre/php_pcre.c +++ b/ext/pcre/php_pcre.c @@ -1392,6 +1392,7 @@ static void preg_replace_impl(INTERNAL_FUNCTION_PARAMETERS, zend_bool is_callabl zval_dtor(&callback_name); *return_value = **subject; zval_copy_ctor(return_value); + INIT_PZVAL(return_value); return; } zval_dtor(&callback_name); diff --git a/ext/pcre/tests/preg_replace_callback3.phpt b/ext/pcre/tests/preg_replace_callback3.phpt new file mode 100644 index 0000000000..15d125116e --- /dev/null +++ b/ext/pcre/tests/preg_replace_callback3.phpt @@ -0,0 +1,71 @@ +--TEST-- +preg_replace_callback() 3 +--FILE-- +<?php + +var_dump(preg_replace_callback()); +var_dump(preg_replace_callback(1)); +var_dump(preg_replace_callback(1,2)); +var_dump(preg_replace_callback(1,2,3)); +var_dump(preg_replace_callback(1,2,3,4)); +$a = 5; +var_dump(preg_replace_callback(1,2,3,4,$a)); +$a = ""; +var_dump(preg_replace_callback("","","","",$a)); +$a = array(); +var_dump(preg_replace_callback($a,$a,$a,$a,$a)); + +echo "Done\n"; +?> +--EXPECTF-- +Warning: Wrong parameter count for preg_replace_callback() in %s on line %d +NULL + +Warning: Wrong parameter count for preg_replace_callback() in %s on line %d +NULL + +Warning: Wrong parameter count for preg_replace_callback() in %s on line %d +NULL + +Warning: preg_replace_callback(): Requires argument 2, '2', to be a valid callback in %s on line %d +int(3) + +Warning: preg_replace_callback(): Requires argument 2, '2', to be a valid callback in %s on line %d +int(3) + +Warning: preg_replace_callback(): Requires argument 2, '2', to be a valid callback in %s on line %d +int(3) + +Warning: preg_replace_callback(): Requires argument 2, '', to be a valid callback in %s on line 1%d +string(0) "" + +Warning: preg_replace_callback(): Requires argument 2, 'Array', to be a valid callback in %s on line %d +array(0) { +} +Done +--UEXPECTF-- +Warning: Wrong parameter count for preg_replace_callback() in %s on line %d +NULL + +Warning: Wrong parameter count for preg_replace_callback() in %s on line %d +NULL + +Warning: Wrong parameter count for preg_replace_callback() in %s on line %d +NULL + +Warning: preg_replace_callback(): Requires argument 2, '2', to be a valid callback in %s on line %d +int(3) + +Warning: preg_replace_callback(): Requires argument 2, '2', to be a valid callback in %s on line %d +int(3) + +Warning: preg_replace_callback(): Requires argument 2, '2', to be a valid callback in %s on line %d +int(3) + +Warning: preg_replace_callback(): Requires argument 2, '', to be a valid callback in %s on line %d +unicode(0) "" + +Warning: preg_replace_callback(): Requires argument 2, 'Array', to be a valid callback in %s on line %d +array(0) { +} +Done |