summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Zend/zend_execute.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c
index 37539d6ffe..0cfd8f456c 100644
--- a/Zend/zend_execute.c
+++ b/Zend/zend_execute.c
@@ -729,8 +729,10 @@ static inline void zend_assign_to_object(zval *retval, zval *object_ptr, zval *p
ZVAL_COPY_VALUE(&tmp, value);
value = &tmp;
} else if (value_type == IS_CONST) {
- ZVAL_DUP(&tmp, value);
- value = &tmp;
+ if (UNEXPECTED(Z_OPT_COPYABLE_P(value))) {
+ ZVAL_DUP(&tmp, value);
+ value = &tmp;
+ }
} else if (Z_REFCOUNTED_P(value)) {
Z_ADDREF_P(value);
}