From: Xinchen Hui Date: Thu, 17 Mar 2016 07:26:40 +0000 (+0800) Subject: Merge branch 'PHP-7.0' X-Git-Tag: php-7.1.0alpha1~470 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f3dd50d650802624f77ab674ef87a19df972922b;p=php Merge branch 'PHP-7.0' * PHP-7.0: Fixed test script Update NEWS Fixed bug #71841 (EG(error_zval) is not handled well) Fixed bug #71840 (Unserialize accepts wrongly data) Conflicts: Zend/zend_vm_def.h Zend/zend_vm_execute.h --- f3dd50d650802624f77ab674ef87a19df972922b diff --cc Zend/zend_vm_def.h index c5826c140c,2c721c398a..5a68397ce5 --- a/Zend/zend_vm_def.h +++ b/Zend/zend_vm_def.h @@@ -737,10 -744,10 +737,10 @@@ ZEND_VM_HELPER(zend_binary_assign_op_ob /* 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, ((OP2_TYPE == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL))) != NULL)) { - zval zv; - if (UNEXPECTED(zptr == &EG(error_zval))) { + if (UNEXPECTED(Z_ISERROR_P(zptr))) { - ZVAL_NULL(&zv); - zptr = &zv; + if (UNEXPECTED(RETURN_VALUE_USED(opline))) { + ZVAL_NULL(EX_VAR(opline->result.var)); + } } else { ZVAL_DEREF(zptr); SEPARATE_ZVAL_NOREF(zptr); @@@ -1124,21 -1155,19 +1122,19 @@@ ZEND_VM_HELPER(zend_pre_incdec_property } /* 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, ((OP2_TYPE == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL))) != NULL)) { - - if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) { - if (inc) { - fast_long_increment_function(zptr); - } else { - fast_long_decrement_function(zptr); - if (UNEXPECTED(zptr == &EG(error_zval))) { ++ if (UNEXPECTED(Z_ISERROR_P(zptr))) { + if (UNEXPECTED(RETURN_VALUE_USED(opline))) { + ZVAL_NULL(EX_VAR(opline->result.var)); } } else { - zval zv; - if (UNEXPECTED(Z_ISERROR_P(zptr))) { - ZVAL_NULL(&zv); - zptr = &zv; + if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) { + if (inc) { + fast_long_increment_function(zptr); + } else { + fast_long_decrement_function(zptr); + } } else { ZVAL_DEREF(zptr); SEPARATE_ZVAL_NOREF(zptr); @@@ -1206,18 -1241,16 +1202,16 @@@ ZEND_VM_HELPER(zend_post_incdec_propert 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)) { - - if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) { - ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr); - if (inc) { - fast_long_increment_function(zptr); - } else { - fast_long_decrement_function(zptr); - } - if (UNEXPECTED(zptr == &EG(error_zval))) { ++ if (UNEXPECTED(Z_ISERROR_P(zptr))) { + ZVAL_NULL(EX_VAR(opline->result.var)); } else { - if (UNEXPECTED(Z_ISERROR_P(zptr))) { - zptr = EX_VAR(opline->result.var); - ZVAL_NULL(zptr); + if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) { + ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr); + if (inc) { + fast_long_increment_function(zptr); + } else { + fast_long_decrement_function(zptr); + } } else { ZVAL_DEREF(zptr); ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr); diff --cc Zend/zend_vm_execute.h index 0a62b43f7a,c719aa2808..fa306954b0 --- a/Zend/zend_vm_execute.h +++ b/Zend/zend_vm_execute.h @@@ -16877,10 -16524,10 +16877,10 @@@ static ZEND_OPCODE_HANDLER_RET ZEND_FAS /* 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 zv; - if (UNEXPECTED(zptr == &EG(error_zval))) { + if (UNEXPECTED(Z_ISERROR_P(zptr))) { - ZVAL_NULL(&zv); - zptr = &zv; + if (UNEXPECTED(RETURN_VALUE_USED(opline))) { + ZVAL_NULL(EX_VAR(opline->result.var)); + } } else { ZVAL_DEREF(zptr); SEPARATE_ZVAL_NOREF(zptr); @@@ -17262,21 -16933,19 +17260,19 @@@ static ZEND_OPCODE_HANDLER_RET ZEND_FAS } /* 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)) { - - if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) { - if (inc) { - fast_long_increment_function(zptr); - } else { - fast_long_decrement_function(zptr); - if (UNEXPECTED(zptr == &EG(error_zval))) { ++ if (UNEXPECTED(Z_ISERROR_P(zptr))) { + if (UNEXPECTED(RETURN_VALUE_USED(opline))) { + ZVAL_NULL(EX_VAR(opline->result.var)); } } else { - zval zv; - if (UNEXPECTED(Z_ISERROR_P(zptr))) { - ZVAL_NULL(&zv); - zptr = &zv; + if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) { + if (inc) { + fast_long_increment_function(zptr); + } else { + fast_long_decrement_function(zptr); + } } else { ZVAL_DEREF(zptr); SEPARATE_ZVAL_NOREF(zptr); @@@ -17343,18 -17018,16 +17339,16 @@@ static ZEND_OPCODE_HANDLER_RET ZEND_FAS 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)) { - - if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) { - ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr); - if (inc) { - fast_long_increment_function(zptr); - } else { - fast_long_decrement_function(zptr); - } - if (UNEXPECTED(zptr == &EG(error_zval))) { ++ if (UNEXPECTED(Z_ISERROR_P(zptr))) { + ZVAL_NULL(EX_VAR(opline->result.var)); } else { - if (UNEXPECTED(Z_ISERROR_P(zptr))) { - zptr = EX_VAR(opline->result.var); - ZVAL_NULL(zptr); + if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) { + ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr); + if (inc) { + fast_long_increment_function(zptr); + } else { + fast_long_decrement_function(zptr); + } } else { ZVAL_DEREF(zptr); ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr); @@@ -21244,10 -19740,10 +21238,10 @@@ static ZEND_OPCODE_HANDLER_RET ZEND_FAS /* 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 zv; - if (UNEXPECTED(zptr == &EG(error_zval))) { + if (UNEXPECTED(Z_ISERROR_P(zptr))) { - ZVAL_NULL(&zv); - zptr = &zv; + if (UNEXPECTED(RETURN_VALUE_USED(opline))) { + ZVAL_NULL(EX_VAR(opline->result.var)); + } } else { ZVAL_DEREF(zptr); SEPARATE_ZVAL_NOREF(zptr); @@@ -21629,21 -20149,19 +21621,19 @@@ static ZEND_OPCODE_HANDLER_RET ZEND_FAS } /* 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)) { - - if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) { - if (inc) { - fast_long_increment_function(zptr); - } else { - fast_long_decrement_function(zptr); - if (UNEXPECTED(zptr == &EG(error_zval))) { ++ if (UNEXPECTED(Z_ISERROR_P(zptr))) { + if (UNEXPECTED(RETURN_VALUE_USED(opline))) { + ZVAL_NULL(EX_VAR(opline->result.var)); } } else { - zval zv; - if (UNEXPECTED(Z_ISERROR_P(zptr))) { - ZVAL_NULL(&zv); - zptr = &zv; + if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) { + if (inc) { + fast_long_increment_function(zptr); + } else { + fast_long_decrement_function(zptr); + } } else { ZVAL_DEREF(zptr); SEPARATE_ZVAL_NOREF(zptr); @@@ -21710,18 -20234,16 +21700,16 @@@ static ZEND_OPCODE_HANDLER_RET ZEND_FAS 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)) { - - if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) { - ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr); - if (inc) { - fast_long_increment_function(zptr); - } else { - fast_long_decrement_function(zptr); - } - if (UNEXPECTED(zptr == &EG(error_zval))) { ++ if (UNEXPECTED(Z_ISERROR_P(zptr))) { + ZVAL_NULL(EX_VAR(opline->result.var)); } else { - if (UNEXPECTED(Z_ISERROR_P(zptr))) { - zptr = EX_VAR(opline->result.var); - ZVAL_NULL(zptr); + if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) { + ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr); + if (inc) { + fast_long_increment_function(zptr); + } else { + fast_long_decrement_function(zptr); + } } else { ZVAL_DEREF(zptr); ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr); @@@ -23802,10 -21411,10 +23790,10 @@@ static ZEND_OPCODE_HANDLER_RET ZEND_FAS /* 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 zv; - if (UNEXPECTED(zptr == &EG(error_zval))) { + if (UNEXPECTED(Z_ISERROR_P(zptr))) { - ZVAL_NULL(&zv); - zptr = &zv; + if (UNEXPECTED(RETURN_VALUE_USED(opline))) { + ZVAL_NULL(EX_VAR(opline->result.var)); + } } else { ZVAL_DEREF(zptr); SEPARATE_ZVAL_NOREF(zptr); @@@ -24189,21 -21822,19 +24175,19 @@@ static ZEND_OPCODE_HANDLER_RET ZEND_FAS } /* 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)) { - - if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) { - if (inc) { - fast_long_increment_function(zptr); - } else { - fast_long_decrement_function(zptr); - if (UNEXPECTED(zptr == &EG(error_zval))) { ++ if (UNEXPECTED(Z_ISERROR_P(zptr))) { + if (UNEXPECTED(RETURN_VALUE_USED(opline))) { + ZVAL_NULL(EX_VAR(opline->result.var)); } } else { - zval zv; - if (UNEXPECTED(Z_ISERROR_P(zptr))) { - ZVAL_NULL(&zv); - zptr = &zv; + if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) { + if (inc) { + fast_long_increment_function(zptr); + } else { + fast_long_decrement_function(zptr); + } } else { ZVAL_DEREF(zptr); SEPARATE_ZVAL_NOREF(zptr); @@@ -24271,18 -21908,16 +24255,16 @@@ static ZEND_OPCODE_HANDLER_RET ZEND_FAS 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)) { - - if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) { - ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr); - if (inc) { - fast_long_increment_function(zptr); - } else { - fast_long_decrement_function(zptr); - } - if (UNEXPECTED(zptr == &EG(error_zval))) { ++ if (UNEXPECTED(Z_ISERROR_P(zptr))) { + ZVAL_NULL(EX_VAR(opline->result.var)); } else { - if (UNEXPECTED(Z_ISERROR_P(zptr))) { - zptr = EX_VAR(opline->result.var); - ZVAL_NULL(zptr); + if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) { + ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr); + if (inc) { + fast_long_increment_function(zptr); + } else { + fast_long_decrement_function(zptr); + } } else { ZVAL_DEREF(zptr); ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr); @@@ -26275,10 -22970,10 +26257,10 @@@ static ZEND_OPCODE_HANDLER_RET ZEND_FAS /* 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 zv; - if (UNEXPECTED(zptr == &EG(error_zval))) { + if (UNEXPECTED(Z_ISERROR_P(zptr))) { - ZVAL_NULL(&zv); - zptr = &zv; + if (UNEXPECTED(RETURN_VALUE_USED(opline))) { + ZVAL_NULL(EX_VAR(opline->result.var)); + } } else { ZVAL_DEREF(zptr); SEPARATE_ZVAL_NOREF(zptr); @@@ -26630,21 -23343,19 +26610,19 @@@ static ZEND_OPCODE_HANDLER_RET ZEND_FAS } /* 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)) { - - if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) { - if (inc) { - fast_long_increment_function(zptr); - } else { - fast_long_decrement_function(zptr); - if (UNEXPECTED(zptr == &EG(error_zval))) { ++ if (UNEXPECTED(Z_ISERROR_P(zptr))) { + if (UNEXPECTED(RETURN_VALUE_USED(opline))) { + ZVAL_NULL(EX_VAR(opline->result.var)); } } else { - zval zv; - if (UNEXPECTED(Z_ISERROR_P(zptr))) { - ZVAL_NULL(&zv); - zptr = &zv; + if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) { + if (inc) { + fast_long_increment_function(zptr); + } else { + fast_long_decrement_function(zptr); + } } else { ZVAL_DEREF(zptr); SEPARATE_ZVAL_NOREF(zptr); @@@ -26711,18 -23428,16 +26689,16 @@@ static ZEND_OPCODE_HANDLER_RET ZEND_FAS 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)) { - - if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) { - ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr); - if (inc) { - fast_long_increment_function(zptr); - } else { - fast_long_decrement_function(zptr); - } - if (UNEXPECTED(zptr == &EG(error_zval))) { ++ if (UNEXPECTED(Z_ISERROR_P(zptr))) { + ZVAL_NULL(EX_VAR(opline->result.var)); } else { - if (UNEXPECTED(Z_ISERROR_P(zptr))) { - zptr = EX_VAR(opline->result.var); - ZVAL_NULL(zptr); + if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) { + ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr); + if (inc) { + fast_long_increment_function(zptr); + } else { + fast_long_decrement_function(zptr); + } } else { ZVAL_DEREF(zptr); ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr); @@@ -29593,10 -25397,10 +29569,10 @@@ static ZEND_OPCODE_HANDLER_RET ZEND_FAS /* 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 zv; - if (UNEXPECTED(zptr == &EG(error_zval))) { + if (UNEXPECTED(Z_ISERROR_P(zptr))) { - ZVAL_NULL(&zv); - zptr = &zv; + if (UNEXPECTED(RETURN_VALUE_USED(opline))) { + ZVAL_NULL(EX_VAR(opline->result.var)); + } } else { ZVAL_DEREF(zptr); SEPARATE_ZVAL_NOREF(zptr); @@@ -29948,21 -25770,19 +29922,19 @@@ static ZEND_OPCODE_HANDLER_RET ZEND_FAS } /* 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)) { - - if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) { - if (inc) { - fast_long_increment_function(zptr); - } else { - fast_long_decrement_function(zptr); - if (UNEXPECTED(zptr == &EG(error_zval))) { ++ if (UNEXPECTED(Z_ISERROR_P(zptr))) { + if (UNEXPECTED(RETURN_VALUE_USED(opline))) { + ZVAL_NULL(EX_VAR(opline->result.var)); } } else { - zval zv; - if (UNEXPECTED(Z_ISERROR_P(zptr))) { - ZVAL_NULL(&zv); - zptr = &zv; + if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) { + if (inc) { + fast_long_increment_function(zptr); + } else { + fast_long_decrement_function(zptr); + } } else { ZVAL_DEREF(zptr); SEPARATE_ZVAL_NOREF(zptr); @@@ -30029,18 -25855,16 +30001,16 @@@ static ZEND_OPCODE_HANDLER_RET ZEND_FAS 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)) { - - if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) { - ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr); - if (inc) { - fast_long_increment_function(zptr); - } else { - fast_long_decrement_function(zptr); - } - if (UNEXPECTED(zptr == &EG(error_zval))) { ++ if (UNEXPECTED(Z_ISERROR_P(zptr))) { + ZVAL_NULL(EX_VAR(opline->result.var)); } else { - if (UNEXPECTED(Z_ISERROR_P(zptr))) { - zptr = EX_VAR(opline->result.var); - ZVAL_NULL(zptr); + if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) { + ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr); + if (inc) { + fast_long_increment_function(zptr); + } else { + fast_long_decrement_function(zptr); + } } else { ZVAL_DEREF(zptr); ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr); @@@ -31850,10 -26896,10 +31820,10 @@@ static ZEND_OPCODE_HANDLER_RET ZEND_FAS /* 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 zv; - if (UNEXPECTED(zptr == &EG(error_zval))) { + if (UNEXPECTED(Z_ISERROR_P(zptr))) { - ZVAL_NULL(&zv); - zptr = &zv; + if (UNEXPECTED(RETURN_VALUE_USED(opline))) { + ZVAL_NULL(EX_VAR(opline->result.var)); + } } else { ZVAL_DEREF(zptr); SEPARATE_ZVAL_NOREF(zptr); @@@ -32206,21 -27270,19 +32174,19 @@@ static ZEND_OPCODE_HANDLER_RET ZEND_FAS } /* 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)) { - - if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) { - if (inc) { - fast_long_increment_function(zptr); - } else { - fast_long_decrement_function(zptr); - if (UNEXPECTED(zptr == &EG(error_zval))) { ++ if (UNEXPECTED(Z_ISERROR_P(zptr))) { + if (UNEXPECTED(RETURN_VALUE_USED(opline))) { + ZVAL_NULL(EX_VAR(opline->result.var)); } } else { - zval zv; - if (UNEXPECTED(Z_ISERROR_P(zptr))) { - ZVAL_NULL(&zv); - zptr = &zv; + if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) { + if (inc) { + fast_long_increment_function(zptr); + } else { + fast_long_decrement_function(zptr); + } } else { ZVAL_DEREF(zptr); SEPARATE_ZVAL_NOREF(zptr); @@@ -32288,18 -27356,16 +32254,16 @@@ static ZEND_OPCODE_HANDLER_RET ZEND_FAS 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)) { - - if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) { - ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr); - if (inc) { - fast_long_increment_function(zptr); - } else { - fast_long_decrement_function(zptr); - } - if (UNEXPECTED(zptr == &EG(error_zval))) { ++ if (UNEXPECTED(Z_ISERROR_P(zptr))) { + ZVAL_NULL(EX_VAR(opline->result.var)); } else { - if (UNEXPECTED(Z_ISERROR_P(zptr))) { - zptr = EX_VAR(opline->result.var); - ZVAL_NULL(zptr); + if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) { + ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr); + if (inc) { + fast_long_increment_function(zptr); + } else { + fast_long_decrement_function(zptr); + } } else { ZVAL_DEREF(zptr); ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr); @@@ -36404,10 -30601,10 +36368,10 @@@ static ZEND_OPCODE_HANDLER_RET ZEND_FAS /* 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 zv; - if (UNEXPECTED(zptr == &EG(error_zval))) { + if (UNEXPECTED(Z_ISERROR_P(zptr))) { - ZVAL_NULL(&zv); - zptr = &zv; + if (UNEXPECTED(RETURN_VALUE_USED(opline))) { + ZVAL_NULL(EX_VAR(opline->result.var)); + } } else { ZVAL_DEREF(zptr); SEPARATE_ZVAL_NOREF(zptr); @@@ -36789,21 -31010,19 +36751,19 @@@ static ZEND_OPCODE_HANDLER_RET ZEND_FAS } /* 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)) { - - if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) { - if (inc) { - fast_long_increment_function(zptr); - } else { - fast_long_decrement_function(zptr); - if (UNEXPECTED(zptr == &EG(error_zval))) { ++ if (UNEXPECTED(Z_ISERROR_P(zptr))) { + if (UNEXPECTED(RETURN_VALUE_USED(opline))) { + ZVAL_NULL(EX_VAR(opline->result.var)); } } else { - zval zv; - if (UNEXPECTED(Z_ISERROR_P(zptr))) { - ZVAL_NULL(&zv); - zptr = &zv; + if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) { + if (inc) { + fast_long_increment_function(zptr); + } else { + fast_long_decrement_function(zptr); + } } else { ZVAL_DEREF(zptr); SEPARATE_ZVAL_NOREF(zptr); @@@ -36870,18 -31095,16 +36830,16 @@@ static ZEND_OPCODE_HANDLER_RET ZEND_FAS 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)) { - - if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) { - ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr); - if (inc) { - fast_long_increment_function(zptr); - } else { - fast_long_decrement_function(zptr); - } - if (UNEXPECTED(zptr == &EG(error_zval))) { ++ if (UNEXPECTED(Z_ISERROR_P(zptr))) { + ZVAL_NULL(EX_VAR(opline->result.var)); } else { - if (UNEXPECTED(Z_ISERROR_P(zptr))) { - zptr = EX_VAR(opline->result.var); - ZVAL_NULL(zptr); + if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) { + ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr); + if (inc) { + fast_long_increment_function(zptr); + } else { + fast_long_decrement_function(zptr); + } } else { ZVAL_DEREF(zptr); ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr); @@@ -42932,10 -35868,10 +42890,10 @@@ static ZEND_OPCODE_HANDLER_RET ZEND_FAS /* 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 zv; - if (UNEXPECTED(zptr == &EG(error_zval))) { + if (UNEXPECTED(Z_ISERROR_P(zptr))) { - ZVAL_NULL(&zv); - zptr = &zv; + if (UNEXPECTED(RETURN_VALUE_USED(opline))) { + ZVAL_NULL(EX_VAR(opline->result.var)); + } } else { ZVAL_DEREF(zptr); SEPARATE_ZVAL_NOREF(zptr); @@@ -43317,21 -36277,19 +43273,19 @@@ static ZEND_OPCODE_HANDLER_RET ZEND_FAS } /* 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)) { - - if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) { - if (inc) { - fast_long_increment_function(zptr); - } else { - fast_long_decrement_function(zptr); - if (UNEXPECTED(zptr == &EG(error_zval))) { ++ if (UNEXPECTED(Z_ISERROR_P(zptr))) { + if (UNEXPECTED(RETURN_VALUE_USED(opline))) { + ZVAL_NULL(EX_VAR(opline->result.var)); } } else { - zval zv; - if (UNEXPECTED(Z_ISERROR_P(zptr))) { - ZVAL_NULL(&zv); - zptr = &zv; + if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) { + if (inc) { + fast_long_increment_function(zptr); + } else { + fast_long_decrement_function(zptr); + } } else { ZVAL_DEREF(zptr); SEPARATE_ZVAL_NOREF(zptr); @@@ -43398,18 -36362,16 +43352,16 @@@ static ZEND_OPCODE_HANDLER_RET ZEND_FAS 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)) { - - if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) { - ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr); - if (inc) { - fast_long_increment_function(zptr); - } else { - fast_long_decrement_function(zptr); - } - if (UNEXPECTED(zptr == &EG(error_zval))) { ++ if (UNEXPECTED(Z_ISERROR_P(zptr))) { + ZVAL_NULL(EX_VAR(opline->result.var)); } else { - if (UNEXPECTED(Z_ISERROR_P(zptr))) { - zptr = EX_VAR(opline->result.var); - ZVAL_NULL(zptr); + if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) { + ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr); + if (inc) { + fast_long_increment_function(zptr); + } else { + fast_long_decrement_function(zptr); + } } else { ZVAL_DEREF(zptr); ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr); @@@ -46487,10 -38540,10 +46439,10 @@@ static ZEND_OPCODE_HANDLER_RET ZEND_FAS /* 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 zv; - if (UNEXPECTED(zptr == &EG(error_zval))) { + if (UNEXPECTED(Z_ISERROR_P(zptr))) { - ZVAL_NULL(&zv); - zptr = &zv; + if (UNEXPECTED(RETURN_VALUE_USED(opline))) { + ZVAL_NULL(EX_VAR(opline->result.var)); + } } else { ZVAL_DEREF(zptr); SEPARATE_ZVAL_NOREF(zptr); @@@ -46874,21 -38951,19 +46824,19 @@@ static ZEND_OPCODE_HANDLER_RET ZEND_FAS } /* 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)) { - - if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) { - if (inc) { - fast_long_increment_function(zptr); - } else { - fast_long_decrement_function(zptr); - if (UNEXPECTED(zptr == &EG(error_zval))) { ++ if (UNEXPECTED(Z_ISERROR_P(zptr))) { + if (UNEXPECTED(RETURN_VALUE_USED(opline))) { + ZVAL_NULL(EX_VAR(opline->result.var)); } } else { - zval zv; - if (UNEXPECTED(Z_ISERROR_P(zptr))) { - ZVAL_NULL(&zv); - zptr = &zv; + if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) { + if (inc) { + fast_long_increment_function(zptr); + } else { + fast_long_decrement_function(zptr); + } } else { ZVAL_DEREF(zptr); SEPARATE_ZVAL_NOREF(zptr); @@@ -46956,18 -39037,16 +46904,16 @@@ static ZEND_OPCODE_HANDLER_RET ZEND_FAS 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)) { - - if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) { - ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr); - if (inc) { - fast_long_increment_function(zptr); - } else { - fast_long_decrement_function(zptr); - } - if (UNEXPECTED(zptr == &EG(error_zval))) { ++ if (UNEXPECTED(Z_ISERROR_P(zptr))) { + ZVAL_NULL(EX_VAR(opline->result.var)); } else { - if (UNEXPECTED(Z_ISERROR_P(zptr))) { - zptr = EX_VAR(opline->result.var); - ZVAL_NULL(zptr); + if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) { + ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr); + if (inc) { + fast_long_increment_function(zptr); + } else { + fast_long_decrement_function(zptr); + } } else { ZVAL_DEREF(zptr); ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);