summaryrefslogtreecommitdiff
path: root/Zend/zend_builtin_functions.c
diff options
context:
space:
mode:
authorXinchen Hui <laruence@gmail.com>2015-09-02 22:14:48 -0700
committerXinchen Hui <laruence@gmail.com>2015-09-02 22:14:48 -0700
commitd5b78cec641173f3e37b9bad1e575fb5b646196c (patch)
treee73ecc91613ac723b72a9b26969885f8aeba3ab7 /Zend/zend_builtin_functions.c
parent6815c08e2939f49a2ac9087924d58448edb401ba (diff)
downloadphp-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.c5
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();
}