summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJani Taskinen <jani@php.net>2010-12-03 15:30:21 +0000
committerJani Taskinen <jani@php.net>2010-12-03 15:30:21 +0000
commitf561727ee0508d94b81146921469d0b4b246f6d8 (patch)
treedcba5f691053d660520b2f8608cac9529d0ec956
parentc8e40e49d73f637b64acee58a29934df2b466c39 (diff)
downloadphp-git-f561727ee0508d94b81146921469d0b4b246f6d8.tar.gz
- Add test for the ob_start($foo); leak/crash bug
-rw-r--r--tests/output/ob_start_callbacks.phpt39
1 files changed, 39 insertions, 0 deletions
diff --git a/tests/output/ob_start_callbacks.phpt b/tests/output/ob_start_callbacks.phpt
new file mode 100644
index 0000000000..da52d85f7f
--- /dev/null
+++ b/tests/output/ob_start_callbacks.phpt
@@ -0,0 +1,39 @@
+--TEST--
+Test ob_start() with callbacks in variables
+--FILE--
+<?php
+
+// Closure in variable
+$a = function ($s) { return strtoupper($s); };
+ob_start($a);
+echo 'closure in variable', "\n";
+ob_end_flush();
+
+// Object (array) in variable
+class foo {
+ static function out($foo) {
+ return strtoupper($foo);
+ }
+}
+$a = array('foo', 'out');
+ob_start($a);
+echo 'object in variable', "\n";
+ob_end_flush();
+
+// Object with static array
+ob_start(array('foo', 'out'));
+echo 'object via static array', "\n";
+ob_end_flush();
+
+function my_strtoupper($foo, $bar) {
+ return strtoupper($foo);
+}
+$a = 'my_strtoupper';
+ob_start($a);
+echo 'function via variable', "\n";
+ob_end_flush();
+--EXPECT--
+CLOSURE IN VARIABLE
+OBJECT IN VARIABLE
+OBJECT VIA STATIC ARRAY
+FUNCTION VIA VARIABLE