garbage = Z_COUNTED_P(variable_ptr);
if (GC_DELREF(garbage) == 0) {
ZVAL_COPY_VALUE(variable_ptr, value);
- if (value_type & (IS_CONST|IS_CV)) {
+ if (ZEND_CONST_COND(value_type == IS_CONST, 0)) {
if (UNEXPECTED(Z_OPT_REFCOUNTED_P(variable_ptr))) {
Z_ADDREF_P(variable_ptr);
}
+ } else if (value_type & (IS_CONST|IS_CV)) {
+ if (Z_OPT_REFCOUNTED_P(variable_ptr)) {
+ Z_ADDREF_P(variable_ptr);
+ }
} else if (ZEND_CONST_COND(value_type == IS_VAR, 1) && UNEXPECTED(ref)) {
if (UNEXPECTED(GC_DELREF(ref) == 0)) {
efree_size(ref, sizeof(zend_reference));
} while (0);
ZVAL_COPY_VALUE(variable_ptr, value);
- if (value_type & (IS_CONST|IS_CV)) {
+ if (ZEND_CONST_COND(value_type == IS_CONST, 0)) {
if (UNEXPECTED(Z_OPT_REFCOUNTED_P(variable_ptr))) {
Z_ADDREF_P(variable_ptr);
}
+ } else if (value_type & (IS_CONST|IS_CV)) {
+ if (Z_OPT_REFCOUNTED_P(variable_ptr)) {
+ Z_ADDREF_P(variable_ptr);
+ }
} else if (ZEND_CONST_COND(value_type == IS_VAR, 1) && UNEXPECTED(ref)) {
if (UNEXPECTED(GC_DELREF(ref) == 0)) {
efree_size(ref, sizeof(zend_reference));
zend_refcounted *gc = Z_COUNTED_P(value);
ZVAL_COPY_VALUE_EX(res, value, gc, value_type);
- if (EXPECTED(Z_TYPE_INFO_REFCOUNTED(value_type))) {
+ if (Z_TYPE_INFO_REFCOUNTED(value_type)) {
GC_ADDREF(gc);
}
}
zend_refcounted *gc = Z_COUNTED_P(value);
ZVAL_COPY_VALUE_EX(res, value, gc, value_type);
- if (EXPECTED(Z_TYPE_INFO_REFCOUNTED(value_type))) {
+ if (Z_TYPE_INFO_REFCOUNTED(value_type)) {
GC_ADDREF(gc);
}
}