diff options
author | Nikita Popov <nikita.ppv@gmail.com> | 2017-04-02 13:31:07 +0200 |
---|---|---|
committer | Nikita Popov <nikita.ppv@gmail.com> | 2017-04-02 13:31:07 +0200 |
commit | 3a890180d3157f0564e5f4d0d15b8103dd268e25 (patch) | |
tree | 52cd65c758454478085bc4d8bae1e4b7996a5b37 | |
parent | 51b06aa86e6924420e55afebdc9bb229c1b96bbb (diff) | |
parent | fe46a7da78f037fe032f27c9b65667c675a6dd8d (diff) | |
download | php-git-3a890180d3157f0564e5f4d0d15b8103dd268e25.tar.gz |
Merge branch 'PHP-7.1'
-rw-r--r-- | Zend/tests/bug74340.phpt | 30 | ||||
-rw-r--r-- | Zend/zend_object_handlers.c | 2 |
2 files changed, 31 insertions, 1 deletions
diff --git a/Zend/tests/bug74340.phpt b/Zend/tests/bug74340.phpt new file mode 100644 index 0000000000..f266dcc236 --- /dev/null +++ b/Zend/tests/bug74340.phpt @@ -0,0 +1,30 @@ +--TEST-- +Bug #74340: Magic function __get has different behavior in php 7.1.x +--FILE-- +<?php +class Test +{ + public function __get($var) + { + static $first = true; + echo '__get '.$var.PHP_EOL; + if ($first) { + $first = false; + $this->$var; + $this->{$var.'2'}; + $this->$var; + } + } +} + +$test = new Test; +$test->test; + +?> +--EXPECTF-- +__get test + +Notice: Undefined property: Test::$test in %s on line %d +__get test2 + +Notice: Undefined property: Test::$test in %s on line %d diff --git a/Zend/zend_object_handlers.c b/Zend/zend_object_handlers.c index 66de460a30..e485ad0e3d 100644 --- a/Zend/zend_object_handlers.c +++ b/Zend/zend_object_handlers.c @@ -533,7 +533,7 @@ ZEND_API uint32_t *zend_get_property_guard(zend_object *zobj, zend_string *membe ALLOC_HASHTABLE(guards); zend_hash_init(guards, 8, NULL, zend_property_guard_dtor, 0); /* mark pointer as "special" using low bit */ - zend_hash_add_new_ptr(guards, member, + zend_hash_add_new_ptr(guards, str, (void*)(((zend_uintptr_t)&zv->u2.property_guard) | 1)); zend_string_release(Z_STR_P(zv)); ZVAL_ARR(zv, guards); |