diff options
author | Dmitry Stogov <dmitry@php.net> | 2005-10-20 07:04:25 +0000 |
---|---|---|
committer | Dmitry Stogov <dmitry@php.net> | 2005-10-20 07:04:25 +0000 |
commit | 9269f5847784091c1174b576da998cf55027f3cf (patch) | |
tree | 5e61512768d68013352c9725dec8956e50c8e0d3 | |
parent | 3446a75a36964410413bd57f756120f1868fc463 (diff) | |
download | php-git-9269f5847784091c1174b576da998cf55027f3cf.tar.gz |
Added forgotten tests
-rwxr-xr-x | Zend/tests/bug33512.phpt | 66 | ||||
-rwxr-xr-x | Zend/tests/bug34062.phpt | 24 |
2 files changed, 90 insertions, 0 deletions
diff --git a/Zend/tests/bug33512.phpt b/Zend/tests/bug33512.phpt new file mode 100755 index 0000000000..9dd4e4e5f9 --- /dev/null +++ b/Zend/tests/bug33512.phpt @@ -0,0 +1,66 @@ +--TEST-- +Bug #33512 (unset() overloaded properties doesn't work) +--FILE-- +<?php +class TheObj { + public $RealVar1, $RealVar2, $RealVar3, $RealVar4; + public $Var = array(); + + function __set($var, $val) { + $this->Var[$var] = $val; + } + function __get($var) { + if(isset($this->Var[$var])) return $this->Var[$var]; + else return -1; + } + function __unset($var) { + unset($this->Var[$var]); + } + } + + $SomeObj = new TheObj; + + // this will fine + $SomeObj->RealVar1 = 'somevalue'; + $SomeObj->{'RealVar2'} = 'othervalue'; + $SomeObj->{'RealVar'.(3)} = 'othervaluetoo'; + $SomeObj->{'RealVar'.'4'} = 'anothervalue'; + + // this will fine too + $SomeObj->Virtual1 = 'somevalue'; + $SomeObj->{'Virtual2'} = 'othervalue'; + + // it's can't be used since this will encounter error + $SomeObj->{'Virtual'.(3)} = 'othervaluetoo'; + $SomeObj->{'Virtual'.'4'} = 'anothervalue'; + + // but this will fine, ofcourse + $SomeObj->Var['Virtual'.(3)] = 'othervaluetoo'; + $SomeObj->Var['Virtual'.'4'] = 'anothervalue'; + + + var_dump($SomeObj->RealVar1); + print $SomeObj->{'RealVar'.(3)}."\n"; + + unset($SomeObj->RealVar1); + unset($SomeObj->{'RealVar'.(3)}); + + //the lines below will catch by '__get' magic method since these variables are unavailable anymore + var_dump($SomeObj->RealVar1); + print $SomeObj->{'RealVar'.(3)}."\n"; + + // now we will try to unset these variables + unset($SomeObj->Virtual1); + unset($SomeObj->{'Virtual'.(3)}); + + //but, these variables are still available??? eventhough they're "unset"-ed + print $SomeObj->Virtual1."\n"; + print $SomeObj->{'Virtual'.(3)}."\n"; +?> +--EXPECT-- +string(9) "somevalue" +othervaluetoo +int(-1) +-1 +-1 +-1 diff --git a/Zend/tests/bug34062.phpt b/Zend/tests/bug34062.phpt new file mode 100755 index 0000000000..bcb4ad8c64 --- /dev/null +++ b/Zend/tests/bug34062.phpt @@ -0,0 +1,24 @@ +--TEST-- +Bug #34062 (Crash in catch block when many arguments are used) +--FILE-- +<?php +function f1() { throw new Exception; } +function f2() { echo "here\n"; } + +try { + // Currently it's the minimum required number of zeros + // If you remove one, it won't crash + max(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, f1()); +} catch (Exception $e) { + echo "(((\n"; + f2(0, 0, 0); // Won't crash if less than 3 zeros here + echo ")))\n"; +} +?> +--EXPECT-- +((( +here +))) + |