summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorMarcus Boerger <helly@php.net>2003-07-03 14:06:51 +0000
committerMarcus Boerger <helly@php.net>2003-07-03 14:06:51 +0000
commit5b1a6f7be03ad76ba2de4394c822c0767b366960 (patch)
tree8d9797adb12855f747995fbc2c9ceceee76dbe11 /tests
parent6a4c48be6ff06e137a545613fb5a85378a4237e8 (diff)
downloadphp-git-5b1a6f7be03ad76ba2de4394c822c0767b366960.tar.gz
Accessing globals from a destructor causes memory corruption
Diffstat (limited to 'tests')
-rwxr-xr-xtests/classes/destructor_and_globals.phpt56
1 files changed, 56 insertions, 0 deletions
diff --git a/tests/classes/destructor_and_globals.phpt b/tests/classes/destructor_and_globals.phpt
new file mode 100755
index 0000000000..9caf0f1026
--- /dev/null
+++ b/tests/classes/destructor_and_globals.phpt
@@ -0,0 +1,56 @@
+--TEST--
+ZE2 accessing globals from destructor in shutdown
+--FILE--
+<?php
+$test_cnt = 0;
+$test_num = 0;
+
+function Show() {
+ global $test_cnt;
+ echo "Count: $test_cnt\n";
+}
+
+class counter {
+ protected $id;
+
+ public function __construct() {
+ global $test_cnt, $test_num;
+ $test_cnt++;
+ $this->id = $test_num++;
+ }
+
+ public function Show() {
+ echo 'Id: '.$this->id."\n";
+ }
+
+ // try protected here
+ public function __destruct() {
+ global $test_cnt;
+ $test_cnt--;
+ }
+
+ static public function destroy(&$obj) {
+ $obj = NULL;
+ }
+}
+Show();
+$obj1 = new counter;
+$obj1->Show();
+Show();
+$obj2 = new counter;
+$obj2->Show();
+Show();
+counter::destroy($obj1);
+Show();
+// or uncomment this line and it works
+//counter::destroy($obj2);
+echo "Done\n";
+?>
+--EXPECT--
+Count: 0
+Id: 0
+Count: 1
+Id: 1
+Count: 2
+Count: 1
+Done