]> granicus.if.org Git - php/commitdiff
fix leak, add test
authorAntony Dovgal <tony2001@php.net>
Wed, 30 Aug 2006 16:46:59 +0000 (16:46 +0000)
committerAntony Dovgal <tony2001@php.net>
Wed, 30 Aug 2006 16:46:59 +0000 (16:46 +0000)
ext/pcre/php_pcre.c
ext/pcre/tests/preg_replace_callback3.phpt [new file with mode: 0644]

index 2a531e43055cabd5e348ca7b62df30a9d41f3140..f4ccb142999fc4efb94c73018ce07b79312cdaaa 100644 (file)
@@ -1272,6 +1272,7 @@ static void preg_replace_impl(INTERNAL_FUNCTION_PARAMETERS, zend_bool is_callabl
                        efree(callback_name);
                        *return_value = **subject;
                        zval_copy_ctor(return_value);
+                       INIT_PZVAL(return_value);
                        return;
                }
                efree(callback_name);
diff --git a/ext/pcre/tests/preg_replace_callback3.phpt b/ext/pcre/tests/preg_replace_callback3.phpt
new file mode 100644 (file)
index 0000000..fafd966
--- /dev/null
@@ -0,0 +1,45 @@
+--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