summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ext/pcre/php_pcre.c1
-rw-r--r--ext/pcre/tests/preg_replace_callback3.phpt71
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