com php-src: Revert "Fixed bug #70321 (Magic getter breaks reference to array property)": NEWS Zend/tests/bug70321.phpt Zend/zend_exe cute.c
| From: | Xinchen Hui | Date: | Sun, 23 Aug 2015 02:40:28 +0000 |
| Subject: | com php-src: Revert "Fixed bug #70321 (Magic getter breaks reference to array property)": NEWS Zend/tests/bug70321.phpt Zend/zend_exe cute.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-88726@lists.php.net to get a copy of this message | ||
Commit: e26a04f9ecb18fe6d233fb5840f71ad216f27938
Author: Xinchen Hui <laruence@php.net> Sun, 23 Aug 2015 10:40:28 +0800
Parents: 66754585f889e56ddaf3442fd4ac7b9adf93417b
Branches: master
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=e26a04f9ecb18fe6d233fb5840f71ad216f27938
Log:
Revert "Fixed bug #70321 (Magic getter breaks reference to array property)"
This reverts commit 66754585f889e56ddaf3442fd4ac7b9adf93417b.
Bugs:
https://bugs.php.net/70321
Changed paths:
M NEWS
D Zend/tests/bug70321.phpt
M Zend/zend_execute.c
Diff:
diff --git a/NEWS b/NEWS
index 4fdf0e6..f92f283 100644
--- a/NEWS
+++ b/NEWS
@@ -7,7 +7,6 @@ PHP NEWS
. Fixed bug #70300 (Syntactical inconsistency with new group use syntax).
(marcio dot web2 at gmail dot com)
. Fixed bug causing exception traces with anon classes to be truncated. (Bob)
- . Fixed bug #70321 (Magic getter breaks reference to array property). (Bob)
- PDO_OCI:
. Fixed bug #70308 (PDO::ATTR_PREFETCH is ignored). (Chris Jones)
diff --git a/Zend/tests/bug70321.phpt b/Zend/tests/bug70321.phpt
deleted file mode 100644
index b1cb87f..0000000
--- a/Zend/tests/bug70321.phpt
+++ /dev/null
@@ -1,31 +0,0 @@
---TEST--
-Bug #70321 (Magic getter breaks reference to array property)
---FILE--
-<?php
-
-class foo {
- private $bar;
- public function __construct() {
- $this->bar = new bar();
- }
-
- public function &__get($key) {
- $bar = $this->bar;
- // no direct reference to $this->bar
- return $bar;
- }
-}
-
-class bar { public $baz = []; }
-
-$foo = new foo();
-$foo->bar->baz[] = function() {};
-var_dump($foo->bar->baz);
-
-?>
---EXPECTF--
-array(1) {
- [0]=>
- object(Closure)#%d (0) {
- }
-}
diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c
index edb1f9d..59f936d 100644
--- a/Zend/zend_execute.c
+++ b/Zend/zend_execute.c
@@ -89,7 +89,7 @@ static const zend_internal_function zend_pass_function = {
#define zval_ptr_dtor(zv) i_zval_ptr_dtor(zv ZEND_FILE_LINE_CC)
#define READY_TO_DESTROY(zv) \
- (EXPECTED(zv) && Z_REFCOUNTED_P(zv) && Z_REFCOUNT_P(zv) == 1 &&
(EXPECTED(Z_ISREF_P(zv) == 0) || Z_REFCOUNTED_P(Z_REFVAL_P(zv)) &&
Z_REFCOUNT_P(Z_REFVAL_P(zv)) == 1))
+ (UNEXPECTED(zv) && Z_REFCOUNTED_P(zv) && Z_REFCOUNT_P(zv) == 1)
#define EXTRACT_ZVAL_PTR(zv, check_null) do { \
zval *__zv = (zv); \