/* here we are sure we are dealing with an object */
if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CONST == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL))) != NULL)) {
-
- ZVAL_DEREF(zptr);
- SEPARATE_ZVAL_NOREF(zptr);
-
+ zval zv;
+ if (UNEXPECTED(Z_ISERROR_P(zptr))) {
+ ZVAL_NULL(&zv);
+ zptr = &zv;
+ } else {
+ ZVAL_DEREF(zptr);
+ SEPARATE_ZVAL_NOREF(zptr);
+ }
binary_op(zptr, zptr, value);
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), zptr);
}
+ if (UNEXPECTED(zptr == &zv)) {
+ zval_ptr_dtor(zptr);
+ }
} else {
zend_assign_op_overloaded_property(object, property, ((IS_CONST == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), value, binary_op, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
}
fast_long_decrement_function(zptr);
}
} else {
- ZVAL_DEREF(zptr);
- SEPARATE_ZVAL_NOREF(zptr);
+ zval zv;
+ if (UNEXPECTED(Z_ISERROR_P(zptr))) {
+ ZVAL_NULL(&zv);
+ zptr = &zv;
+ } else {
+ ZVAL_DEREF(zptr);
+ SEPARATE_ZVAL_NOREF(zptr);
+ }
if (inc) {
increment_function(zptr);
fast_long_decrement_function(zptr);
}
} else {
- ZVAL_DEREF(zptr);
- ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
- zval_opt_copy_ctor(zptr);
+ if (UNEXPECTED(Z_ISERROR_P(zptr))) {
+ zptr = EX_VAR(opline->result.var);
+ ZVAL_NULL(zptr);
+ } else {
+ ZVAL_DEREF(zptr);
+ ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
+ zval_opt_copy_ctor(zptr);
+ }
if (inc) {
increment_function(zptr);
} else {
/* here we are sure we are dealing with an object */
if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CV == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL))) != NULL)) {
-
- ZVAL_DEREF(zptr);
- SEPARATE_ZVAL_NOREF(zptr);
-
+ zval zv;
+ if (UNEXPECTED(Z_ISERROR_P(zptr))) {
+ ZVAL_NULL(&zv);
+ zptr = &zv;
+ } else {
+ ZVAL_DEREF(zptr);
+ SEPARATE_ZVAL_NOREF(zptr);
+ }
binary_op(zptr, zptr, value);
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), zptr);
}
+ if (UNEXPECTED(zptr == &zv)) {
+ zval_ptr_dtor(zptr);
+ }
} else {
zend_assign_op_overloaded_property(object, property, ((IS_CV == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), value, binary_op, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
}
fast_long_decrement_function(zptr);
}
} else {
- ZVAL_DEREF(zptr);
- SEPARATE_ZVAL_NOREF(zptr);
+ zval zv;
+ if (UNEXPECTED(Z_ISERROR_P(zptr))) {
+ ZVAL_NULL(&zv);
+ zptr = &zv;
+ } else {
+ ZVAL_DEREF(zptr);
+ SEPARATE_ZVAL_NOREF(zptr);
+ }
if (inc) {
increment_function(zptr);
fast_long_decrement_function(zptr);
}
} else {
- ZVAL_DEREF(zptr);
- ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
- zval_opt_copy_ctor(zptr);
+ if (UNEXPECTED(Z_ISERROR_P(zptr))) {
+ zptr = EX_VAR(opline->result.var);
+ ZVAL_NULL(zptr);
+ } else {
+ ZVAL_DEREF(zptr);
+ ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
+ zval_opt_copy_ctor(zptr);
+ }
if (inc) {
increment_function(zptr);
} else {
/* here we are sure we are dealing with an object */
if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL))) != NULL)) {
-
- ZVAL_DEREF(zptr);
- SEPARATE_ZVAL_NOREF(zptr);
-
+ zval zv;
+ if (UNEXPECTED(Z_ISERROR_P(zptr))) {
+ ZVAL_NULL(&zv);
+ zptr = &zv;
+ } else {
+ ZVAL_DEREF(zptr);
+ SEPARATE_ZVAL_NOREF(zptr);
+ }
binary_op(zptr, zptr, value);
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), zptr);
}
+ if (UNEXPECTED(zptr == &zv)) {
+ zval_ptr_dtor(zptr);
+ }
} else {
zend_assign_op_overloaded_property(object, property, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), value, binary_op, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
}
fast_long_decrement_function(zptr);
}
} else {
- ZVAL_DEREF(zptr);
- SEPARATE_ZVAL_NOREF(zptr);
+ zval zv;
+ if (UNEXPECTED(Z_ISERROR_P(zptr))) {
+ ZVAL_NULL(&zv);
+ zptr = &zv;
+ } else {
+ ZVAL_DEREF(zptr);
+ SEPARATE_ZVAL_NOREF(zptr);
+ }
if (inc) {
increment_function(zptr);
fast_long_decrement_function(zptr);
}
} else {
- ZVAL_DEREF(zptr);
- ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
- zval_opt_copy_ctor(zptr);
+ if (UNEXPECTED(Z_ISERROR_P(zptr))) {
+ zptr = EX_VAR(opline->result.var);
+ ZVAL_NULL(zptr);
+ } else {
+ ZVAL_DEREF(zptr);
+ ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
+ zval_opt_copy_ctor(zptr);
+ }
if (inc) {
increment_function(zptr);
} else {
/* here we are sure we are dealing with an object */
if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CONST == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL))) != NULL)) {
-
- ZVAL_DEREF(zptr);
- SEPARATE_ZVAL_NOREF(zptr);
-
+ zval zv;
+ if (UNEXPECTED(Z_ISERROR_P(zptr))) {
+ ZVAL_NULL(&zv);
+ zptr = &zv;
+ } else {
+ ZVAL_DEREF(zptr);
+ SEPARATE_ZVAL_NOREF(zptr);
+ }
binary_op(zptr, zptr, value);
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), zptr);
}
+ if (UNEXPECTED(zptr == &zv)) {
+ zval_ptr_dtor(zptr);
+ }
} else {
zend_assign_op_overloaded_property(object, property, ((IS_CONST == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), value, binary_op, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
}
fast_long_decrement_function(zptr);
}
} else {
- ZVAL_DEREF(zptr);
- SEPARATE_ZVAL_NOREF(zptr);
+ zval zv;
+ if (UNEXPECTED(Z_ISERROR_P(zptr))) {
+ ZVAL_NULL(&zv);
+ zptr = &zv;
+ } else {
+ ZVAL_DEREF(zptr);
+ SEPARATE_ZVAL_NOREF(zptr);
+ }
if (inc) {
increment_function(zptr);
fast_long_decrement_function(zptr);
}
} else {
- ZVAL_DEREF(zptr);
- ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
- zval_opt_copy_ctor(zptr);
+ if (UNEXPECTED(Z_ISERROR_P(zptr))) {
+ zptr = EX_VAR(opline->result.var);
+ ZVAL_NULL(zptr);
+ } else {
+ ZVAL_DEREF(zptr);
+ ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
+ zval_opt_copy_ctor(zptr);
+ }
if (inc) {
increment_function(zptr);
} else {
/* here we are sure we are dealing with an object */
if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CV == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL))) != NULL)) {
-
- ZVAL_DEREF(zptr);
- SEPARATE_ZVAL_NOREF(zptr);
-
+ zval zv;
+ if (UNEXPECTED(Z_ISERROR_P(zptr))) {
+ ZVAL_NULL(&zv);
+ zptr = &zv;
+ } else {
+ ZVAL_DEREF(zptr);
+ SEPARATE_ZVAL_NOREF(zptr);
+ }
binary_op(zptr, zptr, value);
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), zptr);
}
+ if (UNEXPECTED(zptr == &zv)) {
+ zval_ptr_dtor(zptr);
+ }
} else {
zend_assign_op_overloaded_property(object, property, ((IS_CV == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), value, binary_op, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
}
fast_long_decrement_function(zptr);
}
} else {
- ZVAL_DEREF(zptr);
- SEPARATE_ZVAL_NOREF(zptr);
+ zval zv;
+ if (UNEXPECTED(Z_ISERROR_P(zptr))) {
+ ZVAL_NULL(&zv);
+ zptr = &zv;
+ } else {
+ ZVAL_DEREF(zptr);
+ SEPARATE_ZVAL_NOREF(zptr);
+ }
if (inc) {
increment_function(zptr);
fast_long_decrement_function(zptr);
}
} else {
- ZVAL_DEREF(zptr);
- ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
- zval_opt_copy_ctor(zptr);
+ if (UNEXPECTED(Z_ISERROR_P(zptr))) {
+ zptr = EX_VAR(opline->result.var);
+ ZVAL_NULL(zptr);
+ } else {
+ ZVAL_DEREF(zptr);
+ ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
+ zval_opt_copy_ctor(zptr);
+ }
if (inc) {
increment_function(zptr);
} else {
/* here we are sure we are dealing with an object */
if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL))) != NULL)) {
-
- ZVAL_DEREF(zptr);
- SEPARATE_ZVAL_NOREF(zptr);
-
+ zval zv;
+ if (UNEXPECTED(Z_ISERROR_P(zptr))) {
+ ZVAL_NULL(&zv);
+ zptr = &zv;
+ } else {
+ ZVAL_DEREF(zptr);
+ SEPARATE_ZVAL_NOREF(zptr);
+ }
binary_op(zptr, zptr, value);
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), zptr);
}
+ if (UNEXPECTED(zptr == &zv)) {
+ zval_ptr_dtor(zptr);
+ }
} else {
zend_assign_op_overloaded_property(object, property, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), value, binary_op, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
}
fast_long_decrement_function(zptr);
}
} else {
- ZVAL_DEREF(zptr);
- SEPARATE_ZVAL_NOREF(zptr);
+ zval zv;
+ if (UNEXPECTED(Z_ISERROR_P(zptr))) {
+ ZVAL_NULL(&zv);
+ zptr = &zv;
+ } else {
+ ZVAL_DEREF(zptr);
+ SEPARATE_ZVAL_NOREF(zptr);
+ }
if (inc) {
increment_function(zptr);
fast_long_decrement_function(zptr);
}
} else {
- ZVAL_DEREF(zptr);
- ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
- zval_opt_copy_ctor(zptr);
+ if (UNEXPECTED(Z_ISERROR_P(zptr))) {
+ zptr = EX_VAR(opline->result.var);
+ ZVAL_NULL(zptr);
+ } else {
+ ZVAL_DEREF(zptr);
+ ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
+ zval_opt_copy_ctor(zptr);
+ }
if (inc) {
increment_function(zptr);
} else {
/* here we are sure we are dealing with an object */
if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CONST == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL))) != NULL)) {
-
- ZVAL_DEREF(zptr);
- SEPARATE_ZVAL_NOREF(zptr);
-
+ zval zv;
+ if (UNEXPECTED(Z_ISERROR_P(zptr))) {
+ ZVAL_NULL(&zv);
+ zptr = &zv;
+ } else {
+ ZVAL_DEREF(zptr);
+ SEPARATE_ZVAL_NOREF(zptr);
+ }
binary_op(zptr, zptr, value);
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), zptr);
}
+ if (UNEXPECTED(zptr == &zv)) {
+ zval_ptr_dtor(zptr);
+ }
} else {
zend_assign_op_overloaded_property(object, property, ((IS_CONST == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), value, binary_op, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
}
fast_long_decrement_function(zptr);
}
} else {
- ZVAL_DEREF(zptr);
- SEPARATE_ZVAL_NOREF(zptr);
+ zval zv;
+ if (UNEXPECTED(Z_ISERROR_P(zptr))) {
+ ZVAL_NULL(&zv);
+ zptr = &zv;
+ } else {
+ ZVAL_DEREF(zptr);
+ SEPARATE_ZVAL_NOREF(zptr);
+ }
if (inc) {
increment_function(zptr);
fast_long_decrement_function(zptr);
}
} else {
- ZVAL_DEREF(zptr);
- ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
- zval_opt_copy_ctor(zptr);
+ if (UNEXPECTED(Z_ISERROR_P(zptr))) {
+ zptr = EX_VAR(opline->result.var);
+ ZVAL_NULL(zptr);
+ } else {
+ ZVAL_DEREF(zptr);
+ ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
+ zval_opt_copy_ctor(zptr);
+ }
if (inc) {
increment_function(zptr);
} else {
/* here we are sure we are dealing with an object */
if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CV == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL))) != NULL)) {
-
- ZVAL_DEREF(zptr);
- SEPARATE_ZVAL_NOREF(zptr);
-
+ zval zv;
+ if (UNEXPECTED(Z_ISERROR_P(zptr))) {
+ ZVAL_NULL(&zv);
+ zptr = &zv;
+ } else {
+ ZVAL_DEREF(zptr);
+ SEPARATE_ZVAL_NOREF(zptr);
+ }
binary_op(zptr, zptr, value);
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), zptr);
}
+ if (UNEXPECTED(zptr == &zv)) {
+ zval_ptr_dtor(zptr);
+ }
} else {
zend_assign_op_overloaded_property(object, property, ((IS_CV == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), value, binary_op, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
}
fast_long_decrement_function(zptr);
}
} else {
- ZVAL_DEREF(zptr);
- SEPARATE_ZVAL_NOREF(zptr);
+ zval zv;
+ if (UNEXPECTED(Z_ISERROR_P(zptr))) {
+ ZVAL_NULL(&zv);
+ zptr = &zv;
+ } else {
+ ZVAL_DEREF(zptr);
+ SEPARATE_ZVAL_NOREF(zptr);
+ }
if (inc) {
increment_function(zptr);
fast_long_decrement_function(zptr);
}
} else {
- ZVAL_DEREF(zptr);
- ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
- zval_opt_copy_ctor(zptr);
+ if (UNEXPECTED(Z_ISERROR_P(zptr))) {
+ zptr = EX_VAR(opline->result.var);
+ ZVAL_NULL(zptr);
+ } else {
+ ZVAL_DEREF(zptr);
+ ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
+ zval_opt_copy_ctor(zptr);
+ }
if (inc) {
increment_function(zptr);
} else {
/* here we are sure we are dealing with an object */
if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL))) != NULL)) {
-
- ZVAL_DEREF(zptr);
- SEPARATE_ZVAL_NOREF(zptr);
-
+ zval zv;
+ if (UNEXPECTED(Z_ISERROR_P(zptr))) {
+ ZVAL_NULL(&zv);
+ zptr = &zv;
+ } else {
+ ZVAL_DEREF(zptr);
+ SEPARATE_ZVAL_NOREF(zptr);
+ }
binary_op(zptr, zptr, value);
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
ZVAL_COPY(EX_VAR(opline->result.var), zptr);
}
+ if (UNEXPECTED(zptr == &zv)) {
+ zval_ptr_dtor(zptr);
+ }
} else {
zend_assign_op_overloaded_property(object, property, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), value, binary_op, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
}
fast_long_decrement_function(zptr);
}
} else {
- ZVAL_DEREF(zptr);
- SEPARATE_ZVAL_NOREF(zptr);
+ zval zv;
+ if (UNEXPECTED(Z_ISERROR_P(zptr))) {
+ ZVAL_NULL(&zv);
+ zptr = &zv;
+ } else {
+ ZVAL_DEREF(zptr);
+ SEPARATE_ZVAL_NOREF(zptr);
+ }
if (inc) {
increment_function(zptr);
fast_long_decrement_function(zptr);
}
} else {
- ZVAL_DEREF(zptr);
- ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
- zval_opt_copy_ctor(zptr);
+ if (UNEXPECTED(Z_ISERROR_P(zptr))) {
+ zptr = EX_VAR(opline->result.var);
+ ZVAL_NULL(zptr);
+ } else {
+ ZVAL_DEREF(zptr);
+ ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
+ zval_opt_copy_ctor(zptr);
+ }
if (inc) {
increment_function(zptr);
} else {