mirror of
https://github.com/php/php-src.git
synced 2024-09-29 13:56:09 +00:00
Fixed Bug #71824 (null ptr deref _zval_get_string_func (zend_operators.c:851))
This commit is contained in:
parent
9020086a13
commit
b9aed47a7a
23
Zend/tests/bug71824.phpt
Normal file
23
Zend/tests/bug71824.phpt
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
--TEST--
|
||||||
|
Bug #71824 (null ptr deref _zval_get_string_func (zend_operators.c:851))
|
||||||
|
--INI--
|
||||||
|
error_reporting=0
|
||||||
|
--FILE--
|
||||||
|
<?php
|
||||||
|
$z = unserialize('O:1:"A":0:{}');
|
||||||
|
var_dump($z->e.=0);
|
||||||
|
var_dump(++$z->x);
|
||||||
|
var_dump($z->y++);
|
||||||
|
|
||||||
|
$y = array(PHP_INT_MAX => 0);
|
||||||
|
var_dump($y[] .= 0);
|
||||||
|
var_dump(++$y[]);
|
||||||
|
var_dump($y[]++);
|
||||||
|
?>
|
||||||
|
--EXPECT--
|
||||||
|
string(1) "0"
|
||||||
|
int(1)
|
||||||
|
int(1)
|
||||||
|
NULL
|
||||||
|
NULL
|
||||||
|
NULL
|
@ -737,14 +737,21 @@ ZEND_VM_HELPER(zend_binary_assign_op_obj_helper, VAR|UNUSED|CV, CONST|TMPVAR|CV,
|
|||||||
/* here we are sure we are dealing with an object */
|
/* here we are sure we are dealing with an object */
|
||||||
if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
|
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, ((OP2_TYPE == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL))) != NULL)) {
|
&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((OP2_TYPE == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL))) != NULL)) {
|
||||||
|
zval zv;
|
||||||
|
if (UNEXPECTED(Z_ISERROR_P(zptr))) {
|
||||||
|
ZVAL_NULL(&zv);
|
||||||
|
zptr = &zv;
|
||||||
|
} else {
|
||||||
ZVAL_DEREF(zptr);
|
ZVAL_DEREF(zptr);
|
||||||
SEPARATE_ZVAL_NOREF(zptr);
|
SEPARATE_ZVAL_NOREF(zptr);
|
||||||
|
}
|
||||||
binary_op(zptr, zptr, value);
|
binary_op(zptr, zptr, value);
|
||||||
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
|
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
|
||||||
ZVAL_COPY(EX_VAR(opline->result.var), zptr);
|
ZVAL_COPY(EX_VAR(opline->result.var), zptr);
|
||||||
}
|
}
|
||||||
|
if (UNEXPECTED(zptr == &zv)) {
|
||||||
|
zval_ptr_dtor(zptr);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
zend_assign_op_overloaded_property(object, property, ((OP2_TYPE == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), value, binary_op, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
|
zend_assign_op_overloaded_property(object, property, ((OP2_TYPE == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), value, binary_op, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
|
||||||
}
|
}
|
||||||
@ -1127,9 +1134,15 @@ ZEND_VM_HELPER(zend_pre_incdec_property_helper, VAR|UNUSED|CV, CONST|TMPVAR|CV,
|
|||||||
} else {
|
} else {
|
||||||
fast_long_decrement_function(zptr);
|
fast_long_decrement_function(zptr);
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
zval zv;
|
||||||
|
if (UNEXPECTED(Z_ISERROR_P(zptr))) {
|
||||||
|
ZVAL_NULL(&zv);
|
||||||
|
zptr = &zv;
|
||||||
} else {
|
} else {
|
||||||
ZVAL_DEREF(zptr);
|
ZVAL_DEREF(zptr);
|
||||||
SEPARATE_ZVAL_NOREF(zptr);
|
SEPARATE_ZVAL_NOREF(zptr);
|
||||||
|
}
|
||||||
|
|
||||||
if (inc) {
|
if (inc) {
|
||||||
increment_function(zptr);
|
increment_function(zptr);
|
||||||
@ -1201,10 +1214,15 @@ ZEND_VM_HELPER(zend_post_incdec_property_helper, VAR|UNUSED|CV, CONST|TMPVAR|CV,
|
|||||||
} else {
|
} else {
|
||||||
fast_long_decrement_function(zptr);
|
fast_long_decrement_function(zptr);
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
if (UNEXPECTED(Z_ISERROR_P(zptr))) {
|
||||||
|
zptr = EX_VAR(opline->result.var);
|
||||||
|
ZVAL_NULL(zptr);
|
||||||
} else {
|
} else {
|
||||||
ZVAL_DEREF(zptr);
|
ZVAL_DEREF(zptr);
|
||||||
ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
|
ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
|
||||||
zval_opt_copy_ctor(zptr);
|
zval_opt_copy_ctor(zptr);
|
||||||
|
}
|
||||||
if (inc) {
|
if (inc) {
|
||||||
increment_function(zptr);
|
increment_function(zptr);
|
||||||
} else {
|
} else {
|
||||||
|
@ -17334,14 +17334,21 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_obj_helper_SP
|
|||||||
/* here we are sure we are dealing with an object */
|
/* here we are sure we are dealing with an object */
|
||||||
if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
|
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)) {
|
&& 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 zv;
|
||||||
|
if (UNEXPECTED(Z_ISERROR_P(zptr))) {
|
||||||
|
ZVAL_NULL(&zv);
|
||||||
|
zptr = &zv;
|
||||||
|
} else {
|
||||||
ZVAL_DEREF(zptr);
|
ZVAL_DEREF(zptr);
|
||||||
SEPARATE_ZVAL_NOREF(zptr);
|
SEPARATE_ZVAL_NOREF(zptr);
|
||||||
|
}
|
||||||
binary_op(zptr, zptr, value);
|
binary_op(zptr, zptr, value);
|
||||||
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
|
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
|
||||||
ZVAL_COPY(EX_VAR(opline->result.var), zptr);
|
ZVAL_COPY(EX_VAR(opline->result.var), zptr);
|
||||||
}
|
}
|
||||||
|
if (UNEXPECTED(zptr == &zv)) {
|
||||||
|
zval_ptr_dtor(zptr);
|
||||||
|
}
|
||||||
} else {
|
} 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));
|
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));
|
||||||
}
|
}
|
||||||
@ -17722,9 +17729,15 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_pre_incdec_property_helper_SPE
|
|||||||
} else {
|
} else {
|
||||||
fast_long_decrement_function(zptr);
|
fast_long_decrement_function(zptr);
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
zval zv;
|
||||||
|
if (UNEXPECTED(Z_ISERROR_P(zptr))) {
|
||||||
|
ZVAL_NULL(&zv);
|
||||||
|
zptr = &zv;
|
||||||
} else {
|
} else {
|
||||||
ZVAL_DEREF(zptr);
|
ZVAL_DEREF(zptr);
|
||||||
SEPARATE_ZVAL_NOREF(zptr);
|
SEPARATE_ZVAL_NOREF(zptr);
|
||||||
|
}
|
||||||
|
|
||||||
if (inc) {
|
if (inc) {
|
||||||
increment_function(zptr);
|
increment_function(zptr);
|
||||||
@ -17795,10 +17808,15 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_post_incdec_property_helper_SP
|
|||||||
} else {
|
} else {
|
||||||
fast_long_decrement_function(zptr);
|
fast_long_decrement_function(zptr);
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
if (UNEXPECTED(Z_ISERROR_P(zptr))) {
|
||||||
|
zptr = EX_VAR(opline->result.var);
|
||||||
|
ZVAL_NULL(zptr);
|
||||||
} else {
|
} else {
|
||||||
ZVAL_DEREF(zptr);
|
ZVAL_DEREF(zptr);
|
||||||
ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
|
ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
|
||||||
zval_opt_copy_ctor(zptr);
|
zval_opt_copy_ctor(zptr);
|
||||||
|
}
|
||||||
if (inc) {
|
if (inc) {
|
||||||
increment_function(zptr);
|
increment_function(zptr);
|
||||||
} else {
|
} else {
|
||||||
@ -21683,14 +21701,21 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_obj_helper_SP
|
|||||||
/* here we are sure we are dealing with an object */
|
/* here we are sure we are dealing with an object */
|
||||||
if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
|
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)) {
|
&& 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 zv;
|
||||||
|
if (UNEXPECTED(Z_ISERROR_P(zptr))) {
|
||||||
|
ZVAL_NULL(&zv);
|
||||||
|
zptr = &zv;
|
||||||
|
} else {
|
||||||
ZVAL_DEREF(zptr);
|
ZVAL_DEREF(zptr);
|
||||||
SEPARATE_ZVAL_NOREF(zptr);
|
SEPARATE_ZVAL_NOREF(zptr);
|
||||||
|
}
|
||||||
binary_op(zptr, zptr, value);
|
binary_op(zptr, zptr, value);
|
||||||
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
|
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
|
||||||
ZVAL_COPY(EX_VAR(opline->result.var), zptr);
|
ZVAL_COPY(EX_VAR(opline->result.var), zptr);
|
||||||
}
|
}
|
||||||
|
if (UNEXPECTED(zptr == &zv)) {
|
||||||
|
zval_ptr_dtor(zptr);
|
||||||
|
}
|
||||||
} else {
|
} 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));
|
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));
|
||||||
}
|
}
|
||||||
@ -22071,9 +22096,15 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_pre_incdec_property_helper_SPE
|
|||||||
} else {
|
} else {
|
||||||
fast_long_decrement_function(zptr);
|
fast_long_decrement_function(zptr);
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
zval zv;
|
||||||
|
if (UNEXPECTED(Z_ISERROR_P(zptr))) {
|
||||||
|
ZVAL_NULL(&zv);
|
||||||
|
zptr = &zv;
|
||||||
} else {
|
} else {
|
||||||
ZVAL_DEREF(zptr);
|
ZVAL_DEREF(zptr);
|
||||||
SEPARATE_ZVAL_NOREF(zptr);
|
SEPARATE_ZVAL_NOREF(zptr);
|
||||||
|
}
|
||||||
|
|
||||||
if (inc) {
|
if (inc) {
|
||||||
increment_function(zptr);
|
increment_function(zptr);
|
||||||
@ -22144,10 +22175,15 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_post_incdec_property_helper_SP
|
|||||||
} else {
|
} else {
|
||||||
fast_long_decrement_function(zptr);
|
fast_long_decrement_function(zptr);
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
if (UNEXPECTED(Z_ISERROR_P(zptr))) {
|
||||||
|
zptr = EX_VAR(opline->result.var);
|
||||||
|
ZVAL_NULL(zptr);
|
||||||
} else {
|
} else {
|
||||||
ZVAL_DEREF(zptr);
|
ZVAL_DEREF(zptr);
|
||||||
ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
|
ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
|
||||||
zval_opt_copy_ctor(zptr);
|
zval_opt_copy_ctor(zptr);
|
||||||
|
}
|
||||||
if (inc) {
|
if (inc) {
|
||||||
increment_function(zptr);
|
increment_function(zptr);
|
||||||
} else {
|
} else {
|
||||||
@ -24223,14 +24259,21 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_obj_helper_SP
|
|||||||
/* here we are sure we are dealing with an object */
|
/* here we are sure we are dealing with an object */
|
||||||
if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
|
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)) {
|
&& 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 zv;
|
||||||
|
if (UNEXPECTED(Z_ISERROR_P(zptr))) {
|
||||||
|
ZVAL_NULL(&zv);
|
||||||
|
zptr = &zv;
|
||||||
|
} else {
|
||||||
ZVAL_DEREF(zptr);
|
ZVAL_DEREF(zptr);
|
||||||
SEPARATE_ZVAL_NOREF(zptr);
|
SEPARATE_ZVAL_NOREF(zptr);
|
||||||
|
}
|
||||||
binary_op(zptr, zptr, value);
|
binary_op(zptr, zptr, value);
|
||||||
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
|
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
|
||||||
ZVAL_COPY(EX_VAR(opline->result.var), zptr);
|
ZVAL_COPY(EX_VAR(opline->result.var), zptr);
|
||||||
}
|
}
|
||||||
|
if (UNEXPECTED(zptr == &zv)) {
|
||||||
|
zval_ptr_dtor(zptr);
|
||||||
|
}
|
||||||
} else {
|
} 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));
|
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));
|
||||||
}
|
}
|
||||||
@ -24613,9 +24656,15 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_pre_incdec_property_helper_SPE
|
|||||||
} else {
|
} else {
|
||||||
fast_long_decrement_function(zptr);
|
fast_long_decrement_function(zptr);
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
zval zv;
|
||||||
|
if (UNEXPECTED(Z_ISERROR_P(zptr))) {
|
||||||
|
ZVAL_NULL(&zv);
|
||||||
|
zptr = &zv;
|
||||||
} else {
|
} else {
|
||||||
ZVAL_DEREF(zptr);
|
ZVAL_DEREF(zptr);
|
||||||
SEPARATE_ZVAL_NOREF(zptr);
|
SEPARATE_ZVAL_NOREF(zptr);
|
||||||
|
}
|
||||||
|
|
||||||
if (inc) {
|
if (inc) {
|
||||||
increment_function(zptr);
|
increment_function(zptr);
|
||||||
@ -24687,10 +24736,15 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_post_incdec_property_helper_SP
|
|||||||
} else {
|
} else {
|
||||||
fast_long_decrement_function(zptr);
|
fast_long_decrement_function(zptr);
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
if (UNEXPECTED(Z_ISERROR_P(zptr))) {
|
||||||
|
zptr = EX_VAR(opline->result.var);
|
||||||
|
ZVAL_NULL(zptr);
|
||||||
} else {
|
} else {
|
||||||
ZVAL_DEREF(zptr);
|
ZVAL_DEREF(zptr);
|
||||||
ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
|
ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
|
||||||
zval_opt_copy_ctor(zptr);
|
zval_opt_copy_ctor(zptr);
|
||||||
|
}
|
||||||
if (inc) {
|
if (inc) {
|
||||||
increment_function(zptr);
|
increment_function(zptr);
|
||||||
} else {
|
} else {
|
||||||
@ -26678,14 +26732,21 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_obj_helper_SP
|
|||||||
/* here we are sure we are dealing with an object */
|
/* here we are sure we are dealing with an object */
|
||||||
if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
|
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)) {
|
&& 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 zv;
|
||||||
|
if (UNEXPECTED(Z_ISERROR_P(zptr))) {
|
||||||
|
ZVAL_NULL(&zv);
|
||||||
|
zptr = &zv;
|
||||||
|
} else {
|
||||||
ZVAL_DEREF(zptr);
|
ZVAL_DEREF(zptr);
|
||||||
SEPARATE_ZVAL_NOREF(zptr);
|
SEPARATE_ZVAL_NOREF(zptr);
|
||||||
|
}
|
||||||
binary_op(zptr, zptr, value);
|
binary_op(zptr, zptr, value);
|
||||||
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
|
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
|
||||||
ZVAL_COPY(EX_VAR(opline->result.var), zptr);
|
ZVAL_COPY(EX_VAR(opline->result.var), zptr);
|
||||||
}
|
}
|
||||||
|
if (UNEXPECTED(zptr == &zv)) {
|
||||||
|
zval_ptr_dtor(zptr);
|
||||||
|
}
|
||||||
} else {
|
} 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));
|
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));
|
||||||
}
|
}
|
||||||
@ -27036,9 +27097,15 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_pre_incdec_property_helper_SPE
|
|||||||
} else {
|
} else {
|
||||||
fast_long_decrement_function(zptr);
|
fast_long_decrement_function(zptr);
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
zval zv;
|
||||||
|
if (UNEXPECTED(Z_ISERROR_P(zptr))) {
|
||||||
|
ZVAL_NULL(&zv);
|
||||||
|
zptr = &zv;
|
||||||
} else {
|
} else {
|
||||||
ZVAL_DEREF(zptr);
|
ZVAL_DEREF(zptr);
|
||||||
SEPARATE_ZVAL_NOREF(zptr);
|
SEPARATE_ZVAL_NOREF(zptr);
|
||||||
|
}
|
||||||
|
|
||||||
if (inc) {
|
if (inc) {
|
||||||
increment_function(zptr);
|
increment_function(zptr);
|
||||||
@ -27109,10 +27176,15 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_post_incdec_property_helper_SP
|
|||||||
} else {
|
} else {
|
||||||
fast_long_decrement_function(zptr);
|
fast_long_decrement_function(zptr);
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
if (UNEXPECTED(Z_ISERROR_P(zptr))) {
|
||||||
|
zptr = EX_VAR(opline->result.var);
|
||||||
|
ZVAL_NULL(zptr);
|
||||||
} else {
|
} else {
|
||||||
ZVAL_DEREF(zptr);
|
ZVAL_DEREF(zptr);
|
||||||
ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
|
ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
|
||||||
zval_opt_copy_ctor(zptr);
|
zval_opt_copy_ctor(zptr);
|
||||||
|
}
|
||||||
if (inc) {
|
if (inc) {
|
||||||
increment_function(zptr);
|
increment_function(zptr);
|
||||||
} else {
|
} else {
|
||||||
@ -29978,14 +30050,21 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_obj_helper_SP
|
|||||||
/* here we are sure we are dealing with an object */
|
/* here we are sure we are dealing with an object */
|
||||||
if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
|
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)) {
|
&& 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 zv;
|
||||||
|
if (UNEXPECTED(Z_ISERROR_P(zptr))) {
|
||||||
|
ZVAL_NULL(&zv);
|
||||||
|
zptr = &zv;
|
||||||
|
} else {
|
||||||
ZVAL_DEREF(zptr);
|
ZVAL_DEREF(zptr);
|
||||||
SEPARATE_ZVAL_NOREF(zptr);
|
SEPARATE_ZVAL_NOREF(zptr);
|
||||||
|
}
|
||||||
binary_op(zptr, zptr, value);
|
binary_op(zptr, zptr, value);
|
||||||
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
|
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
|
||||||
ZVAL_COPY(EX_VAR(opline->result.var), zptr);
|
ZVAL_COPY(EX_VAR(opline->result.var), zptr);
|
||||||
}
|
}
|
||||||
|
if (UNEXPECTED(zptr == &zv)) {
|
||||||
|
zval_ptr_dtor(zptr);
|
||||||
|
}
|
||||||
} else {
|
} 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));
|
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));
|
||||||
}
|
}
|
||||||
@ -30336,9 +30415,15 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_pre_incdec_property_helper_SPE
|
|||||||
} else {
|
} else {
|
||||||
fast_long_decrement_function(zptr);
|
fast_long_decrement_function(zptr);
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
zval zv;
|
||||||
|
if (UNEXPECTED(Z_ISERROR_P(zptr))) {
|
||||||
|
ZVAL_NULL(&zv);
|
||||||
|
zptr = &zv;
|
||||||
} else {
|
} else {
|
||||||
ZVAL_DEREF(zptr);
|
ZVAL_DEREF(zptr);
|
||||||
SEPARATE_ZVAL_NOREF(zptr);
|
SEPARATE_ZVAL_NOREF(zptr);
|
||||||
|
}
|
||||||
|
|
||||||
if (inc) {
|
if (inc) {
|
||||||
increment_function(zptr);
|
increment_function(zptr);
|
||||||
@ -30409,10 +30494,15 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_post_incdec_property_helper_SP
|
|||||||
} else {
|
} else {
|
||||||
fast_long_decrement_function(zptr);
|
fast_long_decrement_function(zptr);
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
if (UNEXPECTED(Z_ISERROR_P(zptr))) {
|
||||||
|
zptr = EX_VAR(opline->result.var);
|
||||||
|
ZVAL_NULL(zptr);
|
||||||
} else {
|
} else {
|
||||||
ZVAL_DEREF(zptr);
|
ZVAL_DEREF(zptr);
|
||||||
ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
|
ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
|
||||||
zval_opt_copy_ctor(zptr);
|
zval_opt_copy_ctor(zptr);
|
||||||
|
}
|
||||||
if (inc) {
|
if (inc) {
|
||||||
increment_function(zptr);
|
increment_function(zptr);
|
||||||
} else {
|
} else {
|
||||||
@ -32217,14 +32307,21 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_obj_helper_SP
|
|||||||
/* here we are sure we are dealing with an object */
|
/* here we are sure we are dealing with an object */
|
||||||
if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
|
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)) {
|
&& 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 zv;
|
||||||
|
if (UNEXPECTED(Z_ISERROR_P(zptr))) {
|
||||||
|
ZVAL_NULL(&zv);
|
||||||
|
zptr = &zv;
|
||||||
|
} else {
|
||||||
ZVAL_DEREF(zptr);
|
ZVAL_DEREF(zptr);
|
||||||
SEPARATE_ZVAL_NOREF(zptr);
|
SEPARATE_ZVAL_NOREF(zptr);
|
||||||
|
}
|
||||||
binary_op(zptr, zptr, value);
|
binary_op(zptr, zptr, value);
|
||||||
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
|
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
|
||||||
ZVAL_COPY(EX_VAR(opline->result.var), zptr);
|
ZVAL_COPY(EX_VAR(opline->result.var), zptr);
|
||||||
}
|
}
|
||||||
|
if (UNEXPECTED(zptr == &zv)) {
|
||||||
|
zval_ptr_dtor(zptr);
|
||||||
|
}
|
||||||
} else {
|
} 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));
|
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));
|
||||||
}
|
}
|
||||||
@ -32576,9 +32673,15 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_pre_incdec_property_helper_SPE
|
|||||||
} else {
|
} else {
|
||||||
fast_long_decrement_function(zptr);
|
fast_long_decrement_function(zptr);
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
zval zv;
|
||||||
|
if (UNEXPECTED(Z_ISERROR_P(zptr))) {
|
||||||
|
ZVAL_NULL(&zv);
|
||||||
|
zptr = &zv;
|
||||||
} else {
|
} else {
|
||||||
ZVAL_DEREF(zptr);
|
ZVAL_DEREF(zptr);
|
||||||
SEPARATE_ZVAL_NOREF(zptr);
|
SEPARATE_ZVAL_NOREF(zptr);
|
||||||
|
}
|
||||||
|
|
||||||
if (inc) {
|
if (inc) {
|
||||||
increment_function(zptr);
|
increment_function(zptr);
|
||||||
@ -32650,10 +32753,15 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_post_incdec_property_helper_SP
|
|||||||
} else {
|
} else {
|
||||||
fast_long_decrement_function(zptr);
|
fast_long_decrement_function(zptr);
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
if (UNEXPECTED(Z_ISERROR_P(zptr))) {
|
||||||
|
zptr = EX_VAR(opline->result.var);
|
||||||
|
ZVAL_NULL(zptr);
|
||||||
} else {
|
} else {
|
||||||
ZVAL_DEREF(zptr);
|
ZVAL_DEREF(zptr);
|
||||||
ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
|
ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
|
||||||
zval_opt_copy_ctor(zptr);
|
zval_opt_copy_ctor(zptr);
|
||||||
|
}
|
||||||
if (inc) {
|
if (inc) {
|
||||||
increment_function(zptr);
|
increment_function(zptr);
|
||||||
} else {
|
} else {
|
||||||
@ -36753,14 +36861,21 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_obj_helper_SP
|
|||||||
/* here we are sure we are dealing with an object */
|
/* here we are sure we are dealing with an object */
|
||||||
if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
|
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)) {
|
&& 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 zv;
|
||||||
|
if (UNEXPECTED(Z_ISERROR_P(zptr))) {
|
||||||
|
ZVAL_NULL(&zv);
|
||||||
|
zptr = &zv;
|
||||||
|
} else {
|
||||||
ZVAL_DEREF(zptr);
|
ZVAL_DEREF(zptr);
|
||||||
SEPARATE_ZVAL_NOREF(zptr);
|
SEPARATE_ZVAL_NOREF(zptr);
|
||||||
|
}
|
||||||
binary_op(zptr, zptr, value);
|
binary_op(zptr, zptr, value);
|
||||||
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
|
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
|
||||||
ZVAL_COPY(EX_VAR(opline->result.var), zptr);
|
ZVAL_COPY(EX_VAR(opline->result.var), zptr);
|
||||||
}
|
}
|
||||||
|
if (UNEXPECTED(zptr == &zv)) {
|
||||||
|
zval_ptr_dtor(zptr);
|
||||||
|
}
|
||||||
} else {
|
} 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));
|
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));
|
||||||
}
|
}
|
||||||
@ -37141,9 +37256,15 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_pre_incdec_property_helper_SPE
|
|||||||
} else {
|
} else {
|
||||||
fast_long_decrement_function(zptr);
|
fast_long_decrement_function(zptr);
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
zval zv;
|
||||||
|
if (UNEXPECTED(Z_ISERROR_P(zptr))) {
|
||||||
|
ZVAL_NULL(&zv);
|
||||||
|
zptr = &zv;
|
||||||
} else {
|
} else {
|
||||||
ZVAL_DEREF(zptr);
|
ZVAL_DEREF(zptr);
|
||||||
SEPARATE_ZVAL_NOREF(zptr);
|
SEPARATE_ZVAL_NOREF(zptr);
|
||||||
|
}
|
||||||
|
|
||||||
if (inc) {
|
if (inc) {
|
||||||
increment_function(zptr);
|
increment_function(zptr);
|
||||||
@ -37214,10 +37335,15 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_post_incdec_property_helper_SP
|
|||||||
} else {
|
} else {
|
||||||
fast_long_decrement_function(zptr);
|
fast_long_decrement_function(zptr);
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
if (UNEXPECTED(Z_ISERROR_P(zptr))) {
|
||||||
|
zptr = EX_VAR(opline->result.var);
|
||||||
|
ZVAL_NULL(zptr);
|
||||||
} else {
|
} else {
|
||||||
ZVAL_DEREF(zptr);
|
ZVAL_DEREF(zptr);
|
||||||
ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
|
ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
|
||||||
zval_opt_copy_ctor(zptr);
|
zval_opt_copy_ctor(zptr);
|
||||||
|
}
|
||||||
if (inc) {
|
if (inc) {
|
||||||
increment_function(zptr);
|
increment_function(zptr);
|
||||||
} else {
|
} else {
|
||||||
@ -43263,14 +43389,21 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_obj_helper_SP
|
|||||||
/* here we are sure we are dealing with an object */
|
/* here we are sure we are dealing with an object */
|
||||||
if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
|
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)) {
|
&& 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 zv;
|
||||||
|
if (UNEXPECTED(Z_ISERROR_P(zptr))) {
|
||||||
|
ZVAL_NULL(&zv);
|
||||||
|
zptr = &zv;
|
||||||
|
} else {
|
||||||
ZVAL_DEREF(zptr);
|
ZVAL_DEREF(zptr);
|
||||||
SEPARATE_ZVAL_NOREF(zptr);
|
SEPARATE_ZVAL_NOREF(zptr);
|
||||||
|
}
|
||||||
binary_op(zptr, zptr, value);
|
binary_op(zptr, zptr, value);
|
||||||
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
|
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
|
||||||
ZVAL_COPY(EX_VAR(opline->result.var), zptr);
|
ZVAL_COPY(EX_VAR(opline->result.var), zptr);
|
||||||
}
|
}
|
||||||
|
if (UNEXPECTED(zptr == &zv)) {
|
||||||
|
zval_ptr_dtor(zptr);
|
||||||
|
}
|
||||||
} else {
|
} 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));
|
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));
|
||||||
}
|
}
|
||||||
@ -43651,9 +43784,15 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_pre_incdec_property_helper_SPE
|
|||||||
} else {
|
} else {
|
||||||
fast_long_decrement_function(zptr);
|
fast_long_decrement_function(zptr);
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
zval zv;
|
||||||
|
if (UNEXPECTED(Z_ISERROR_P(zptr))) {
|
||||||
|
ZVAL_NULL(&zv);
|
||||||
|
zptr = &zv;
|
||||||
} else {
|
} else {
|
||||||
ZVAL_DEREF(zptr);
|
ZVAL_DEREF(zptr);
|
||||||
SEPARATE_ZVAL_NOREF(zptr);
|
SEPARATE_ZVAL_NOREF(zptr);
|
||||||
|
}
|
||||||
|
|
||||||
if (inc) {
|
if (inc) {
|
||||||
increment_function(zptr);
|
increment_function(zptr);
|
||||||
@ -43724,10 +43863,15 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_post_incdec_property_helper_SP
|
|||||||
} else {
|
} else {
|
||||||
fast_long_decrement_function(zptr);
|
fast_long_decrement_function(zptr);
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
if (UNEXPECTED(Z_ISERROR_P(zptr))) {
|
||||||
|
zptr = EX_VAR(opline->result.var);
|
||||||
|
ZVAL_NULL(zptr);
|
||||||
} else {
|
} else {
|
||||||
ZVAL_DEREF(zptr);
|
ZVAL_DEREF(zptr);
|
||||||
ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
|
ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
|
||||||
zval_opt_copy_ctor(zptr);
|
zval_opt_copy_ctor(zptr);
|
||||||
|
}
|
||||||
if (inc) {
|
if (inc) {
|
||||||
increment_function(zptr);
|
increment_function(zptr);
|
||||||
} else {
|
} else {
|
||||||
@ -46800,14 +46944,21 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_obj_helper_SP
|
|||||||
/* here we are sure we are dealing with an object */
|
/* here we are sure we are dealing with an object */
|
||||||
if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
|
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)) {
|
&& 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 zv;
|
||||||
|
if (UNEXPECTED(Z_ISERROR_P(zptr))) {
|
||||||
|
ZVAL_NULL(&zv);
|
||||||
|
zptr = &zv;
|
||||||
|
} else {
|
||||||
ZVAL_DEREF(zptr);
|
ZVAL_DEREF(zptr);
|
||||||
SEPARATE_ZVAL_NOREF(zptr);
|
SEPARATE_ZVAL_NOREF(zptr);
|
||||||
|
}
|
||||||
binary_op(zptr, zptr, value);
|
binary_op(zptr, zptr, value);
|
||||||
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
|
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
|
||||||
ZVAL_COPY(EX_VAR(opline->result.var), zptr);
|
ZVAL_COPY(EX_VAR(opline->result.var), zptr);
|
||||||
}
|
}
|
||||||
|
if (UNEXPECTED(zptr == &zv)) {
|
||||||
|
zval_ptr_dtor(zptr);
|
||||||
|
}
|
||||||
} else {
|
} 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));
|
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));
|
||||||
}
|
}
|
||||||
@ -47190,9 +47341,15 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_pre_incdec_property_helper_SPE
|
|||||||
} else {
|
} else {
|
||||||
fast_long_decrement_function(zptr);
|
fast_long_decrement_function(zptr);
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
zval zv;
|
||||||
|
if (UNEXPECTED(Z_ISERROR_P(zptr))) {
|
||||||
|
ZVAL_NULL(&zv);
|
||||||
|
zptr = &zv;
|
||||||
} else {
|
} else {
|
||||||
ZVAL_DEREF(zptr);
|
ZVAL_DEREF(zptr);
|
||||||
SEPARATE_ZVAL_NOREF(zptr);
|
SEPARATE_ZVAL_NOREF(zptr);
|
||||||
|
}
|
||||||
|
|
||||||
if (inc) {
|
if (inc) {
|
||||||
increment_function(zptr);
|
increment_function(zptr);
|
||||||
@ -47264,10 +47421,15 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_post_incdec_property_helper_SP
|
|||||||
} else {
|
} else {
|
||||||
fast_long_decrement_function(zptr);
|
fast_long_decrement_function(zptr);
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
if (UNEXPECTED(Z_ISERROR_P(zptr))) {
|
||||||
|
zptr = EX_VAR(opline->result.var);
|
||||||
|
ZVAL_NULL(zptr);
|
||||||
} else {
|
} else {
|
||||||
ZVAL_DEREF(zptr);
|
ZVAL_DEREF(zptr);
|
||||||
ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
|
ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
|
||||||
zval_opt_copy_ctor(zptr);
|
zval_opt_copy_ctor(zptr);
|
||||||
|
}
|
||||||
if (inc) {
|
if (inc) {
|
||||||
increment_function(zptr);
|
increment_function(zptr);
|
||||||
} else {
|
} else {
|
||||||
|
Loading…
Reference in New Issue
Block a user