Annotation of embedaddon/php/Zend/tests/object_handlers.phpt, revision 1.1
1.1 ! misho 1: --TEST--
! 2: Magic object handlers segfaults and memory errors
! 3: --FILE--
! 4: <?php
! 5: function f($x) {
! 6: return $x;
! 7: }
! 8:
! 9: class foo implements ArrayAccess {
! 10: function __get($property) {
! 11: $GLOBALS["y"] = $property;
! 12: }
! 13: function __set($property, $value) {
! 14: $GLOBALS["y"] = $property;
! 15: }
! 16: function __call($func, $args) {
! 17: $GLOBALS["y"] = $func;
! 18: }
! 19: static function __callStatic($func, $args) {
! 20: $GLOBALS["y"] = $func;
! 21: }
! 22: function offsetGet($index) {
! 23: $GLOBALS["y"] = $index;
! 24: }
! 25: function offsetSet($index, $newval) {
! 26: $GLOBALS["y"] = $index;
! 27: }
! 28: function offsetExists($index) {
! 29: $GLOBALS["y"] = $index;
! 30: }
! 31: function offsetUnset($index) {
! 32: $GLOBALS["y"] = $index;
! 33: }
! 34: }
! 35:
! 36: $x = new foo();
! 37: $y = null;
! 38:
! 39: // IS_CONST
! 40: $z = $x->const_get;
! 41: echo $y,"\n";
! 42: $x->const_set = 1;
! 43: echo $y,"\n";
! 44: $x->const_call();
! 45: echo $y,"\n";
! 46: foo::const_callstatic();
! 47: echo $y,"\n";
! 48: $z = $x["const_dim_get"];
! 49: echo $y,"\n";
! 50: $x["const_dim_set"] = 1;
! 51: echo $y,"\n";
! 52: isset($x["const_dim_isset"]);
! 53: echo $y,"\n";
! 54: unset($x["const_dim_unset"]);
! 55: echo $y,"\n";
! 56:
! 57: // IS_CONST + conversion
! 58: $z = $x->{1};
! 59: echo $y,"\n";
! 60: $x->{2} = 1;
! 61: echo $y,"\n";
! 62:
! 63: // IS_TMP_VAR
! 64: $c = "tmp";
! 65: $z = $x->{$c."_get"};
! 66: echo $y,"\n";
! 67: $x->{$c."_set"} = 1;
! 68: echo $y,"\n";
! 69: $x->{$c."_call"}();
! 70: echo $y,"\n";
! 71: $z = $x[$c."_dim_get"];
! 72: echo $y,"\n";
! 73: $x[$c."_dim_set"] = 1;
! 74: echo $y,"\n";
! 75: isset($x[$c."_dim_isset"]);
! 76: echo $y,"\n";
! 77: unset($x[$c."_dim_unset"]);
! 78: echo $y,"\n";
! 79:
! 80: // IS_TMP_VAR + conversion
! 81: $c = 0;
! 82: $z = $x->{$c+3};
! 83: echo $y,"\n";
! 84: $x->{$c+4} = 1;
! 85: echo $y,"\n";
! 86:
! 87: // IS_CV
! 88: $c = "cv_get";
! 89: $z = $x->{$c};
! 90: echo $y,"\n";
! 91: $c = "cv_set";
! 92: $x->{$c} = 1;
! 93: echo $y,"\n";
! 94: $c = "cv_call";
! 95: $x->{$c}();
! 96: echo $y,"\n";
! 97: $c = "cv_dim_get";
! 98: $z = $x[$c];
! 99: echo $y,"\n";
! 100: $c = "cv_dim_set";
! 101: $x[$c] = 1;
! 102: echo $y,"\n";
! 103: $c = "cv_dim_isset";
! 104: isset($x[$c]);
! 105: echo $y,"\n";
! 106: $c = "cv_dim_unset";
! 107: unset($x[$c]);
! 108: echo $y,"\n";
! 109:
! 110: // IS_CV + conversion
! 111: $c = 5;
! 112: $z = $x->{$c};
! 113: echo $y,"\n";
! 114: $c = 6;
! 115: $x->{$c} = 1;
! 116: echo $y,"\n";
! 117:
! 118: // IS_VAR
! 119: $z = $x->{f("var_get")};
! 120: echo $y,"\n";
! 121: $x->{f("var_set")} = 1;
! 122: echo $y,"\n";
! 123: $x->{f("var_call")}();
! 124: echo $y,"\n";
! 125: $z = $x[f("var_dim_get")];
! 126: echo $y,"\n";
! 127: $x[f("var_dim_set")] = 1;
! 128: echo $y,"\n";
! 129: isset($x[f("var_dim_isset")]);
! 130: echo $y,"\n";
! 131: unset($x[f("var_dim_unset")]);
! 132: echo $y,"\n";
! 133:
! 134: // IS_VAR + conversion
! 135: $z = $x->{f(7)};
! 136: echo $y,"\n";
! 137: $x->{f(8)} = 1;
! 138: echo $y,"\n";
! 139: ?>
! 140: --EXPECT--
! 141: const_get
! 142: const_set
! 143: const_call
! 144: const_callstatic
! 145: const_dim_get
! 146: const_dim_set
! 147: const_dim_isset
! 148: const_dim_unset
! 149: 1
! 150: 2
! 151: tmp_get
! 152: tmp_set
! 153: tmp_call
! 154: tmp_dim_get
! 155: tmp_dim_set
! 156: tmp_dim_isset
! 157: tmp_dim_unset
! 158: 3
! 159: 4
! 160: cv_get
! 161: cv_set
! 162: cv_call
! 163: cv_dim_get
! 164: cv_dim_set
! 165: cv_dim_isset
! 166: cv_dim_unset
! 167: 5
! 168: 6
! 169: var_get
! 170: var_set
! 171: var_call
! 172: var_dim_get
! 173: var_dim_set
! 174: var_dim_isset
! 175: var_dim_unset
! 176: 7
! 177: 8
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>