diff options
-rw-r--r-- | Zend/zend_execute.c | 6 |
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); } |