summaryrefslogtreecommitdiff
path: root/Zend/zend_operators.c
diff options
context:
space:
mode:
authorXinchen Hui <laruence@gmail.com>2016-03-21 19:12:50 +0800
committerXinchen Hui <laruence@gmail.com>2016-03-21 19:12:50 +0800
commit9712a974beb53f47bcffb2c6554cc5c85d231fe2 (patch)
tree43427925518bcaa99a9f076c287e3835aca1e4b2 /Zend/zend_operators.c
parenta9a46f17be6c4460ab0ee785978d6e430ce96017 (diff)
downloadphp-git-9712a974beb53f47bcffb2c6554cc5c85d231fe2.tar.gz
Also protects object to array cast
Diffstat (limited to 'Zend/zend_operators.c')
-rw-r--r--Zend/zend_operators.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/Zend/zend_operators.c b/Zend/zend_operators.c
index 5cbe393d14..50557e56d8 100644
--- a/Zend/zend_operators.c
+++ b/Zend/zend_operators.c
@@ -597,7 +597,9 @@ try_again:
if (obj_ht) {
zval arr;
- if (!Z_OBJCE_P(op)->default_properties_count && obj_ht == Z_OBJ_P(op)->properties) {
+ if (!Z_OBJCE_P(op)->default_properties_count &&
+ obj_ht == Z_OBJ_P(op)->properties &&
+ !ZEND_HASH_GET_APPLY_COUNT(Z_OBJ_P(op)->properties)) {
/* fast copy */
if (EXPECTED(Z_OBJ_P(op)->handlers == &std_object_handlers)) {
ZVAL_ARR(&arr, obj_ht);