diff options
author | Marcus Boerger <helly@php.net> | 2003-07-03 14:06:51 +0000 |
---|---|---|
committer | Marcus Boerger <helly@php.net> | 2003-07-03 14:06:51 +0000 |
commit | 5b1a6f7be03ad76ba2de4394c822c0767b366960 (patch) | |
tree | 8d9797adb12855f747995fbc2c9ceceee76dbe11 /tests | |
parent | 6a4c48be6ff06e137a545613fb5a85378a4237e8 (diff) | |
download | php-git-5b1a6f7be03ad76ba2de4394c822c0767b366960.tar.gz |
Accessing globals from a destructor causes memory corruption
Diffstat (limited to 'tests')
-rwxr-xr-x | tests/classes/destructor_and_globals.phpt | 56 |
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 |