diff options
author | Xinchen Hui <laruence@gmail.com> | 2015-09-02 22:14:48 -0700 |
---|---|---|
committer | Xinchen Hui <laruence@gmail.com> | 2015-09-02 22:14:48 -0700 |
commit | d5b78cec641173f3e37b9bad1e575fb5b646196c (patch) | |
tree | e73ecc91613ac723b72a9b26969885f8aeba3ab7 /Zend/zend_builtin_functions.c | |
parent | 6815c08e2939f49a2ac9087924d58448edb401ba (diff) | |
download | php-git-d5b78cec641173f3e37b9bad1e575fb5b646196c.tar.gz |
We should keep one refcount to resource
Diffstat (limited to 'Zend/zend_builtin_functions.c')
-rw-r--r-- | Zend/zend_builtin_functions.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/Zend/zend_builtin_functions.c b/Zend/zend_builtin_functions.c index 818cc54dd0..e3f087b356 100644 --- a/Zend/zend_builtin_functions.c +++ b/Zend/zend_builtin_functions.c @@ -780,10 +780,11 @@ static void copy_constant_array(zval *dst, zval *src) /* {{{ */ if (!Z_IMMUTABLE_P(val)) { copy_constant_array(new_val, val); } - } else if (Z_TYPE_INFO_P(val) == IS_RESOURCE_EX) { - Z_TYPE_INFO_P(new_val) &= ~(IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT); } else if (Z_REFCOUNTED_P(val)) { Z_ADDREF_P(val); + if (UNEXPECTED(Z_TYPE_INFO_P(val) == IS_RESOURCE_EX)) { + Z_TYPE_INFO_P(new_val) &= ~(IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT); + } } } ZEND_HASH_FOREACH_END(); } |