summaryrefslogtreecommitdiff
path: root/ext/pcre/tests/preg_replace_callback_fatal_error_leak.phpt
diff options
context:
space:
mode:
Diffstat (limited to 'ext/pcre/tests/preg_replace_callback_fatal_error_leak.phpt')
-rw-r--r--ext/pcre/tests/preg_replace_callback_fatal_error_leak.phpt18
1 files changed, 18 insertions, 0 deletions
diff --git a/ext/pcre/tests/preg_replace_callback_fatal_error_leak.phpt b/ext/pcre/tests/preg_replace_callback_fatal_error_leak.phpt
new file mode 100644
index 0000000000..5ea3d4081e
--- /dev/null
+++ b/ext/pcre/tests/preg_replace_callback_fatal_error_leak.phpt
@@ -0,0 +1,18 @@
+--TEST--
+preg_replace_callback() should not leak persistent memory on fatal error
+--FILE--
+<?php
+
+function test() {}
+
+preg_replace_callback('/a/', function($matches) {
+ preg_replace_callback('/x/', function($matches) {
+ function test() {} // Trigger a fatal error.
+ return 'y';
+ }, 'x');
+ return 'b';
+}, 'a');
+
+?>
+--EXPECTF--
+Fatal error: Cannot redeclare test() (previously declared in %s on line %d