summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Zend/zend_builtin_functions.c7
-rw-r--r--Zend/zend_compile.c2
-rw-r--r--Zend/zend_inheritance.c2
-rw-r--r--Zend/zend_vm_def.h22
-rw-r--r--Zend/zend_vm_execute.h434
-rw-r--r--ext/pcntl/pcntl.c2
-rw-r--r--ext/pcre/php_pcre.c4
-rw-r--r--ext/pdo/pdo_dbh.c2
-rw-r--r--ext/reflection/php_reflection.c4
-rw-r--r--ext/soap/php_encoding.c2
-rw-r--r--ext/spl/spl_heap.c6
-rw-r--r--ext/standard/array.c69
-rw-r--r--ext/standard/basic_functions.c6
-rw-r--r--ext/standard/streamsfuncs.c4
-rw-r--r--ext/wddx/wddx.c2
-rw-r--r--main/php_variables.c8
16 files changed, 168 insertions, 408 deletions
diff --git a/Zend/zend_builtin_functions.c b/Zend/zend_builtin_functions.c
index 04bb9142d2..7190af97a4 100644
--- a/Zend/zend_builtin_functions.c
+++ b/Zend/zend_builtin_functions.c
@@ -648,15 +648,16 @@ ZEND_FUNCTION(each)
/* add value elements */
ZVAL_DEREF(entry);
- if (Z_REFCOUNTED_P(entry)) Z_ADDREF_P(entry);
- if (Z_REFCOUNTED_P(entry)) Z_ADDREF_P(entry);
+ if (Z_REFCOUNTED_P(entry)) {
+ GC_ADDREF_EX(Z_COUNTED_P(entry), 2);
+ }
zend_hash_index_add_new(Z_ARRVAL_P(return_value), 1, entry);
zend_hash_add_new(Z_ARRVAL_P(return_value), ZSTR_KNOWN(ZEND_STR_VALUE), entry);
/* add the key elements */
if (zend_hash_get_current_key(target_hash, &key, &num_key) == HASH_KEY_IS_STRING) {
ZVAL_STR_COPY(&tmp, key);
- if (Z_REFCOUNTED(tmp)) Z_ADDREF(tmp);
+ Z_TRY_ADDREF(tmp);
} else {
ZVAL_LONG(&tmp, num_key);
}
diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c
index 7a50a010e0..32c5e2e221 100644
--- a/Zend/zend_compile.c
+++ b/Zend/zend_compile.c
@@ -6961,7 +6961,7 @@ static zend_bool zend_try_ct_eval_array(zval *result, zend_ast *ast) /* {{{ */
zend_ast *key_ast = elem_ast->child[1];
zval *value = zend_ast_get_zval(value_ast);
- if (Z_REFCOUNTED_P(value)) Z_ADDREF_P(value);
+ Z_TRY_ADDREF_P(value);
if (key_ast) {
zval *key = zend_ast_get_zval(key_ast);
diff --git a/Zend/zend_inheritance.c b/Zend/zend_inheritance.c
index 98a3ae6459..a9c468493d 100644
--- a/Zend/zend_inheritance.c
+++ b/Zend/zend_inheritance.c
@@ -1619,8 +1619,8 @@ static void zend_do_traits_property_binding(zend_class_entry *ce) /* {{{ */
} else {
prop_value = &ce->traits[i]->default_properties_table[OBJ_PROP_TO_NUM(property_info->offset)];
}
- if (Z_REFCOUNTED_P(prop_value)) Z_ADDREF_P(prop_value);
+ Z_TRY_ADDREF_P(prop_value);
doc_comment = property_info->doc_comment ? zend_string_copy(property_info->doc_comment) : NULL;
zend_declare_property_ex(ce, prop_name,
prop_value, flags,
diff --git a/Zend/zend_vm_def.h b/Zend/zend_vm_def.h
index 6449741d12..43e99271c3 100644
--- a/Zend/zend_vm_def.h
+++ b/Zend/zend_vm_def.h
@@ -2167,15 +2167,11 @@ ZEND_VM_C_LABEL(fast_assign_obj):
value = &tmp;
} else {
value = Z_REFVAL_P(value);
- if (Z_REFCOUNTED_P(value)) {
- Z_ADDREF_P(value);
- }
+ Z_TRY_ADDREF_P(value);
}
} else {
value = Z_REFVAL_P(value);
- if (Z_REFCOUNTED_P(value)) {
- Z_ADDREF_P(value);
- }
+ Z_TRY_ADDREF_P(value);
}
} else if (OP_DATA_TYPE == IS_CV && Z_REFCOUNTED_P(value)) {
Z_ADDREF_P(value);
@@ -3912,7 +3908,7 @@ ZEND_VM_HANDLER(111, ZEND_RETURN_BY_REF, CONST|TMP|VAR|CV, ANY, SRC)
ZVAL_NEW_REF(EX(return_value), retval_ptr);
if (OP1_TYPE == IS_CONST) {
- if (Z_REFCOUNTED_P(retval_ptr)) Z_ADDREF_P(retval_ptr);
+ Z_TRY_ADDREF_P(retval_ptr);
}
}
break;
@@ -4097,7 +4093,7 @@ ZEND_VM_HANDLER(108, ZEND_THROW, CONST|TMP|VAR|CV, ANY)
zend_exception_save();
if (OP1_TYPE != IS_TMP_VAR) {
- if (Z_REFCOUNTED_P(value)) Z_ADDREF_P(value);
+ Z_TRY_ADDREF_P(value);
}
zend_throw_exception_object(value);
@@ -4512,7 +4508,7 @@ ZEND_VM_C_LABEL(send_again):
if (Z_ISREF_P(arg)) {
ZVAL_DUP(arg, Z_REFVAL_P(arg));
} else {
- if (Z_REFCOUNTED_P(arg)) Z_ADDREF_P(arg);
+ Z_TRY_ADDREF_P(arg);
}
zend_vm_stack_extend_call_frame(&EX(call), arg_num - 1, 1);
@@ -5152,14 +5148,10 @@ ZEND_VM_HANDLER(72, ZEND_ADD_ARRAY_ELEMENT, CONST|TMP|VAR|CV, CONST|TMPVAR|UNUSE
if (OP1_TYPE == IS_TMP_VAR) {
/* pass */
} else if (OP1_TYPE == IS_CONST) {
- if (Z_REFCOUNTED_P(expr_ptr)) {
- Z_ADDREF_P(expr_ptr);
- }
+ Z_TRY_ADDREF_P(expr_ptr);
} else if (OP1_TYPE == IS_CV) {
ZVAL_DEREF(expr_ptr);
- if (Z_REFCOUNTED_P(expr_ptr)) {
- Z_ADDREF_P(expr_ptr);
- }
+ Z_TRY_ADDREF_P(expr_ptr);
} else /* if (OP1_TYPE == IS_VAR) */ {
if (UNEXPECTED(Z_ISREF_P(expr_ptr))) {
zend_refcounted *ref = Z_COUNTED_P(expr_ptr);
diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h
index 88adc1c255..9c405e9054 100644
--- a/Zend/zend_vm_execute.h
+++ b/Zend/zend_vm_execute.h
@@ -1296,7 +1296,7 @@ send_again:
if (Z_ISREF_P(arg)) {
ZVAL_DUP(arg, Z_REFVAL_P(arg));
} else {
- if (Z_REFCOUNTED_P(arg)) Z_ADDREF_P(arg);
+ Z_TRY_ADDREF_P(arg);
}
zend_vm_stack_extend_call_frame(&EX(call), arg_num - 1, 1);
@@ -2962,7 +2962,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_RETURN_BY_REF_SPEC_CONST_HANDL
ZVAL_NEW_REF(EX(return_value), retval_ptr);
if (IS_CONST == IS_CONST) {
- if (Z_REFCOUNTED_P(retval_ptr)) Z_ADDREF_P(retval_ptr);
+ Z_TRY_ADDREF_P(retval_ptr);
}
}
break;
@@ -3070,7 +3070,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_THROW_SPEC_CONST_HANDLER(ZEND_
zend_exception_save();
if (IS_CONST != IS_TMP_VAR) {
- if (Z_REFCOUNTED_P(value)) Z_ADDREF_P(value);
+ Z_TRY_ADDREF_P(value);
}
zend_throw_exception_object(value);
@@ -5843,14 +5843,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_C
if (IS_CONST == IS_TMP_VAR) {
/* pass */
} else if (IS_CONST == IS_CONST) {
- if (Z_REFCOUNTED_P(expr_ptr)) {
- Z_ADDREF_P(expr_ptr);
- }
+ Z_TRY_ADDREF_P(expr_ptr);
} else if (IS_CONST == IS_CV) {
ZVAL_DEREF(expr_ptr);
- if (Z_REFCOUNTED_P(expr_ptr)) {
- Z_ADDREF_P(expr_ptr);
- }
+ Z_TRY_ADDREF_P(expr_ptr);
} else /* if (IS_CONST == IS_VAR) */ {
if (UNEXPECTED(Z_ISREF_P(expr_ptr))) {
zend_refcounted *ref = Z_COUNTED_P(expr_ptr);
@@ -7623,14 +7619,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_U
if (IS_CONST == IS_TMP_VAR) {
/* pass */
} else if (IS_CONST == IS_CONST) {
- if (Z_REFCOUNTED_P(expr_ptr)) {
- Z_ADDREF_P(expr_ptr);
- }
+ Z_TRY_ADDREF_P(expr_ptr);
} else if (IS_CONST == IS_CV) {
ZVAL_DEREF(expr_ptr);
- if (Z_REFCOUNTED_P(expr_ptr)) {
- Z_ADDREF_P(expr_ptr);
- }
+ Z_TRY_ADDREF_P(expr_ptr);
} else /* if (IS_CONST == IS_VAR) */ {
if (UNEXPECTED(Z_ISREF_P(expr_ptr))) {
zend_refcounted *ref = Z_COUNTED_P(expr_ptr);
@@ -9903,14 +9895,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_C
if (IS_CONST == IS_TMP_VAR) {
/* pass */
} else if (IS_CONST == IS_CONST) {
- if (Z_REFCOUNTED_P(expr_ptr)) {
- Z_ADDREF_P(expr_ptr);
- }
+ Z_TRY_ADDREF_P(expr_ptr);
} else if (IS_CONST == IS_CV) {
ZVAL_DEREF(expr_ptr);
- if (Z_REFCOUNTED_P(expr_ptr)) {
- Z_ADDREF_P(expr_ptr);
- }
+ Z_TRY_ADDREF_P(expr_ptr);
} else /* if (IS_CONST == IS_VAR) */ {
if (UNEXPECTED(Z_ISREF_P(expr_ptr))) {
zend_refcounted *ref = Z_COUNTED_P(expr_ptr);
@@ -11915,14 +11903,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_T
if (IS_CONST == IS_TMP_VAR) {
/* pass */
} else if (IS_CONST == IS_CONST) {
- if (Z_REFCOUNTED_P(expr_ptr)) {
- Z_ADDREF_P(expr_ptr);
- }
+ Z_TRY_ADDREF_P(expr_ptr);
} else if (IS_CONST == IS_CV) {
ZVAL_DEREF(expr_ptr);
- if (Z_REFCOUNTED_P(expr_ptr)) {
- Z_ADDREF_P(expr_ptr);
- }
+ Z_TRY_ADDREF_P(expr_ptr);
} else /* if (IS_CONST == IS_VAR) */ {
if (UNEXPECTED(Z_ISREF_P(expr_ptr))) {
zend_refcounted *ref = Z_COUNTED_P(expr_ptr);
@@ -12776,7 +12760,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_RETURN_BY_REF_SPEC_TMP_HANDLER
ZVAL_NEW_REF(EX(return_value), retval_ptr);
if (IS_TMP_VAR == IS_CONST) {
- if (Z_REFCOUNTED_P(retval_ptr)) Z_ADDREF_P(retval_ptr);
+ Z_TRY_ADDREF_P(retval_ptr);
}
}
break;
@@ -12884,7 +12868,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_THROW_SPEC_TMP_HANDLER(ZEND_OP
zend_exception_save();
if (IS_TMP_VAR != IS_TMP_VAR) {
- if (Z_REFCOUNTED_P(value)) Z_ADDREF_P(value);
+ Z_TRY_ADDREF_P(value);
}
zend_throw_exception_object(value);
@@ -13883,14 +13867,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_CON
if (IS_TMP_VAR == IS_TMP_VAR) {
/* pass */
} else if (IS_TMP_VAR == IS_CONST) {
- if (Z_REFCOUNTED_P(expr_ptr)) {
- Z_ADDREF_P(expr_ptr);
- }
+ Z_TRY_ADDREF_P(expr_ptr);
} else if (IS_TMP_VAR == IS_CV) {
ZVAL_DEREF(expr_ptr);
- if (Z_REFCOUNTED_P(expr_ptr)) {
- Z_ADDREF_P(expr_ptr);
- }
+ Z_TRY_ADDREF_P(expr_ptr);
} else /* if (IS_TMP_VAR == IS_VAR) */ {
if (UNEXPECTED(Z_ISREF_P(expr_ptr))) {
zend_refcounted *ref = Z_COUNTED_P(expr_ptr);
@@ -14608,14 +14588,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_UNU
if (IS_TMP_VAR == IS_TMP_VAR) {
/* pass */
} else if (IS_TMP_VAR == IS_CONST) {
- if (Z_REFCOUNTED_P(expr_ptr)) {
- Z_ADDREF_P(expr_ptr);
- }
+ Z_TRY_ADDREF_P(expr_ptr);
} else if (IS_TMP_VAR == IS_CV) {
ZVAL_DEREF(expr_ptr);
- if (Z_REFCOUNTED_P(expr_ptr)) {
- Z_ADDREF_P(expr_ptr);
- }
+ Z_TRY_ADDREF_P(expr_ptr);
} else /* if (IS_TMP_VAR == IS_VAR) */ {
if (UNEXPECTED(Z_ISREF_P(expr_ptr))) {
zend_refcounted *ref = Z_COUNTED_P(expr_ptr);
@@ -15251,14 +15227,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_CV_
if (IS_TMP_VAR == IS_TMP_VAR) {
/* pass */
} else if (IS_TMP_VAR == IS_CONST) {
- if (Z_REFCOUNTED_P(expr_ptr)) {
- Z_ADDREF_P(expr_ptr);
- }
+ Z_TRY_ADDREF_P(expr_ptr);
} else if (IS_TMP_VAR == IS_CV) {
ZVAL_DEREF(expr_ptr);
- if (Z_REFCOUNTED_P(expr_ptr)) {
- Z_ADDREF_P(expr_ptr);
- }
+ Z_TRY_ADDREF_P(expr_ptr);
} else /* if (IS_TMP_VAR == IS_VAR) */ {
if (UNEXPECTED(Z_ISREF_P(expr_ptr))) {
zend_refcounted *ref = Z_COUNTED_P(expr_ptr);
@@ -15794,14 +15766,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_TMP
if (IS_TMP_VAR == IS_TMP_VAR) {
/* pass */
} else if (IS_TMP_VAR == IS_CONST) {
- if (Z_REFCOUNTED_P(expr_ptr)) {
- Z_ADDREF_P(expr_ptr);
- }
+ Z_TRY_ADDREF_P(expr_ptr);
} else if (IS_TMP_VAR == IS_CV) {
ZVAL_DEREF(expr_ptr);
- if (Z_REFCOUNTED_P(expr_ptr)) {
- Z_ADDREF_P(expr_ptr);
- }
+ Z_TRY_ADDREF_P(expr_ptr);
} else /* if (IS_TMP_VAR == IS_VAR) */ {
if (UNEXPECTED(Z_ISREF_P(expr_ptr))) {
zend_refcounted *ref = Z_COUNTED_P(expr_ptr);
@@ -16204,7 +16172,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_RETURN_BY_REF_SPEC_VAR_HANDLER
ZVAL_NEW_REF(EX(return_value), retval_ptr);
if (IS_VAR == IS_CONST) {
- if (Z_REFCOUNTED_P(retval_ptr)) Z_ADDREF_P(retval_ptr);
+ Z_TRY_ADDREF_P(retval_ptr);
}
}
break;
@@ -16313,7 +16281,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_THROW_SPEC_VAR_HANDLER(ZEND_OP
zend_exception_save();
if (IS_VAR != IS_TMP_VAR) {
- if (Z_REFCOUNTED_P(value)) Z_ADDREF_P(value);
+ Z_TRY_ADDREF_P(value);
}
zend_throw_exception_object(value);
@@ -18687,15 +18655,11 @@ fast_assign_obj:
value = &tmp;
} else {
value = Z_REFVAL_P(value);
- if (Z_REFCOUNTED_P(value)) {
- Z_ADDREF_P(value);
- }
+ Z_TRY_ADDREF_P(value);
}
} else {
value = Z_REFVAL_P(value);
- if (Z_REFCOUNTED_P(value)) {
- Z_ADDREF_P(value);
- }
+ Z_TRY_ADDREF_P(value);
}
} else if (IS_CONST == IS_CV && Z_REFCOUNTED_P(value)) {
Z_ADDREF_P(value);
@@ -18845,15 +18809,11 @@ fast_assign_obj:
value = &tmp;
} else {
value = Z_REFVAL_P(value);
- if (Z_REFCOUNTED_P(value)) {
- Z_ADDREF_P(value);
- }
+ Z_TRY_ADDREF_P(value);
}
} else {
value = Z_REFVAL_P(value);
- if (Z_REFCOUNTED_P(value)) {
- Z_ADDREF_P(value);
- }
+ Z_TRY_ADDREF_P(value);
}
} else if (IS_TMP_VAR == IS_CV && Z_REFCOUNTED_P(value)) {
Z_ADDREF_P(value);
@@ -19003,15 +18963,11 @@ fast_assign_obj:
value = &tmp;
} else {
value = Z_REFVAL_P(value);
- if (Z_REFCOUNTED_P(value)) {
- Z_ADDREF_P(value);
- }
+ Z_TRY_ADDREF_P(value);
}
} else {
value = Z_REFVAL_P(value);
- if (Z_REFCOUNTED_P(value)) {
- Z_ADDREF_P(value);
- }
+ Z_TRY_ADDREF_P(value);
}
} else if (IS_VAR == IS_CV && Z_REFCOUNTED_P(value)) {
Z_ADDREF_P(value);
@@ -19161,15 +19117,11 @@ fast_assign_obj:
value = &tmp;
} else {
value = Z_REFVAL_P(value);
- if (Z_REFCOUNTED_P(value)) {
- Z_ADDREF_P(value);
- }
+ Z_TRY_ADDREF_P(value);
}
} else {
value = Z_REFVAL_P(value);
- if (Z_REFCOUNTED_P(value)) {
- Z_ADDREF_P(value);
- }
+ Z_TRY_ADDREF_P(value);
}
} else if (IS_CV == IS_CV && Z_REFCOUNTED_P(value)) {
Z_ADDREF_P(value);
@@ -19881,14 +19833,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_CON
if (IS_VAR == IS_TMP_VAR) {
/* pass */
} else if (IS_VAR == IS_CONST) {
- if (Z_REFCOUNTED_P(expr_ptr)) {
- Z_ADDREF_P(expr_ptr);
- }
+ Z_TRY_ADDREF_P(expr_ptr);
} else if (IS_VAR == IS_CV) {
ZVAL_DEREF(expr_ptr);
- if (Z_REFCOUNTED_P(expr_ptr)) {
- Z_ADDREF_P(expr_ptr);
- }
+ Z_TRY_ADDREF_P(expr_ptr);
} else /* if (IS_VAR == IS_VAR) */ {
if (UNEXPECTED(Z_ISREF_P(expr_ptr))) {
zend_refcounted *ref = Z_COUNTED_P(expr_ptr);
@@ -21633,14 +21581,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_UNU
if (IS_VAR == IS_TMP_VAR) {
/* pass */
} else if (IS_VAR == IS_CONST) {
- if (Z_REFCOUNTED_P(expr_ptr)) {
- Z_ADDREF_P(expr_ptr);
- }
+ Z_TRY_ADDREF_P(expr_ptr);
} else if (IS_VAR == IS_CV) {
ZVAL_DEREF(expr_ptr);
- if (Z_REFCOUNTED_P(expr_ptr)) {
- Z_ADDREF_P(expr_ptr);
- }
+ Z_TRY_ADDREF_P(expr_ptr);
} else /* if (IS_VAR == IS_VAR) */ {
if (UNEXPECTED(Z_ISREF_P(expr_ptr))) {
zend_refcounted *ref = Z_COUNTED_P(expr_ptr);
@@ -23015,15 +22959,11 @@ fast_assign_obj:
value = &tmp;
} else {
value = Z_REFVAL_P(value);
- if (Z_REFCOUNTED_P(value)) {
- Z_ADDREF_P(value);
- }
+ Z_TRY_ADDREF_P(value);
}
} else {
value = Z_REFVAL_P(value);
- if (Z_REFCOUNTED_P(value)) {
- Z_ADDREF_P(value);
- }
+ Z_TRY_ADDREF_P(value);
}
} else if (IS_CONST == IS_CV && Z_REFCOUNTED_P(value)) {
Z_ADDREF_P(value);
@@ -23173,15 +23113,11 @@ fast_assign_obj:
value = &tmp;
} else {
value = Z_REFVAL_P(value);
- if (Z_REFCOUNTED_P(value)) {
- Z_ADDREF_P(value);
- }
+ Z_TRY_ADDREF_P(value);
}
} else {
value = Z_REFVAL_P(value);
- if (Z_REFCOUNTED_P(value)) {
- Z_ADDREF_P(value);
- }
+ Z_TRY_ADDREF_P(value);
}
} else if (IS_TMP_VAR == IS_CV && Z_REFCOUNTED_P(value)) {
Z_ADDREF_P(value);
@@ -23331,15 +23267,11 @@ fast_assign_obj:
value = &tmp;
} else {
value = Z_REFVAL_P(value);
- if (Z_REFCOUNTED_P(value)) {
- Z_ADDREF_P(value);
- }
+ Z_TRY_ADDREF_P(value);
}
} else {
value = Z_REFVAL_P(value);
- if (Z_REFCOUNTED_P(value)) {
- Z_ADDREF_P(value);
- }
+ Z_TRY_ADDREF_P(value);
}
} else if (IS_VAR == IS_CV && Z_REFCOUNTED_P(value)) {
Z_ADDREF_P(value);
@@ -23489,15 +23421,11 @@ fast_assign_obj:
value = &tmp;
} else {
value = Z_REFVAL_P(value);
- if (Z_REFCOUNTED_P(value)) {
- Z_ADDREF_P(value);
- }
+ Z_TRY_ADDREF_P(value);
}
} else {
value = Z_REFVAL_P(value);
- if (Z_REFCOUNTED_P(value)) {
- Z_ADDREF_P(value);
- }
+ Z_TRY_ADDREF_P(value);
}
} else if (IS_CV == IS_CV && Z_REFCOUNTED_P(value)) {
Z_ADDREF_P(value);
@@ -24192,14 +24120,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_CV_
if (IS_VAR == IS_TMP_VAR) {
/* pass */
} else if (IS_VAR == IS_CONST) {
- if (Z_REFCOUNTED_P(expr_ptr)) {
- Z_ADDREF_P(expr_ptr);
- }
+ Z_TRY_ADDREF_P(expr_ptr);
} else if (IS_VAR == IS_CV) {
ZVAL_DEREF(expr_ptr);
- if (Z_REFCOUNTED_P(expr_ptr)) {
- Z_ADDREF_P(expr_ptr);
- }
+ Z_TRY_ADDREF_P(expr_ptr);
} else /* if (IS_VAR == IS_VAR) */ {
if (UNEXPECTED(Z_ISREF_P(expr_ptr))) {
zend_refcounted *ref = Z_COUNTED_P(expr_ptr);
@@ -25637,15 +25561,11 @@ fast_assign_obj:
value = &tmp;
} else {
value = Z_REFVAL_P(value);
- if (Z_REFCOUNTED_P(value)) {
- Z_ADDREF_P(value);
- }
+ Z_TRY_ADDREF_P(value);
}
} else {
value = Z_REFVAL_P(value);
- if (Z_REFCOUNTED_P(value)) {
- Z_ADDREF_P(value);
- }
+ Z_TRY_ADDREF_P(value);
}
} else if (IS_CONST == IS_CV && Z_REFCOUNTED_P(value)) {
Z_ADDREF_P(value);
@@ -25795,15 +25715,11 @@ fast_assign_obj:
value = &tmp;
} else {
value = Z_REFVAL_P(value);
- if (Z_REFCOUNTED_P(value)) {
- Z_ADDREF_P(value);
- }
+ Z_TRY_ADDREF_P(value);
}
} else {
value = Z_REFVAL_P(value);
- if (Z_REFCOUNTED_P(value)) {
- Z_ADDREF_P(value);
- }
+ Z_TRY_ADDREF_P(value);
}
} else if (IS_TMP_VAR == IS_CV && Z_REFCOUNTED_P(value)) {
Z_ADDREF_P(value);
@@ -25953,15 +25869,11 @@ fast_assign_obj:
value = &tmp;
} else {
value = Z_REFVAL_P(value);
- if (Z_REFCOUNTED_P(value)) {
- Z_ADDREF_P(value);
- }
+ Z_TRY_ADDREF_P(value);
}
} else {
value = Z_REFVAL_P(value);
- if (Z_REFCOUNTED_P(value)) {
- Z_ADDREF_P(value);
- }
+ Z_TRY_ADDREF_P(value);
}
} else if (IS_VAR == IS_CV && Z_REFCOUNTED_P(value)) {
Z_ADDREF_P(value);
@@ -26111,15 +26023,11 @@ fast_assign_obj:
value = &tmp;
} else {
value = Z_REFVAL_P(value);
- if (Z_REFCOUNTED_P(value)) {
- Z_ADDREF_P(value);
- }
+ Z_TRY_ADDREF_P(value);
}
} else {
value = Z_REFVAL_P(value);
- if (Z_REFCOUNTED_P(value)) {
- Z_ADDREF_P(value);
- }
+ Z_TRY_ADDREF_P(value);
}
} else if (IS_CV == IS_CV && Z_REFCOUNTED_P(value)) {
Z_ADDREF_P(value);
@@ -26701,14 +26609,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_TMP
if (IS_VAR == IS_TMP_VAR) {
/* pass */
} else if (IS_VAR == IS_CONST) {
- if (Z_REFCOUNTED_P(expr_ptr)) {
- Z_ADDREF_P(expr_ptr);
- }
+ Z_TRY_ADDREF_P(expr_ptr);
} else if (IS_VAR == IS_CV) {
ZVAL_DEREF(expr_ptr);
- if (Z_REFCOUNTED_P(expr_ptr)) {
- Z_ADDREF_P(expr_ptr);
- }
+ Z_TRY_ADDREF_P(expr_ptr);
} else /* if (IS_VAR == IS_VAR) */ {
if (UNEXPECTED(Z_ISREF_P(expr_ptr))) {
zend_refcounted *ref = Z_COUNTED_P(expr_ptr);
@@ -27804,15 +27708,11 @@ fast_assign_obj:
value = &tmp;
} else {
value = Z_REFVAL_P(value);
- if (Z_REFCOUNTED_P(value)) {
- Z_ADDREF_P(value);
- }
+ Z_TRY_ADDREF_P(value);
}
} else {
value = Z_REFVAL_P(value);
- if (Z_REFCOUNTED_P(value)) {
- Z_ADDREF_P(value);
- }
+ Z_TRY_ADDREF_P(value);
}
} else if (IS_CONST == IS_CV && Z_REFCOUNTED_P(value)) {
Z_ADDREF_P(value);
@@ -27962,15 +27862,11 @@ fast_assign_obj:
value = &tmp;
} else {
value = Z_REFVAL_P(value);
- if (Z_REFCOUNTED_P(value)) {
- Z_ADDREF_P(value);
- }
+ Z_TRY_ADDREF_P(value);
}
} else {
value = Z_REFVAL_P(value);
- if (Z_REFCOUNTED_P(value)) {
- Z_ADDREF_P(value);
- }
+ Z_TRY_ADDREF_P(value);
}
} else if (IS_TMP_VAR == IS_CV && Z_REFCOUNTED_P(value)) {
Z_ADDREF_P(value);
@@ -28120,15 +28016,11 @@ fast_assign_obj:
value = &tmp;
} else {
value = Z_REFVAL_P(value);
- if (Z_REFCOUNTED_P(value)) {
- Z_ADDREF_P(value);
- }
+ Z_TRY_ADDREF_P(value);
}
} else {
value = Z_REFVAL_P(value);
- if (Z_REFCOUNTED_P(value)) {
- Z_ADDREF_P(value);
- }
+ Z_TRY_ADDREF_P(value);
}
} else if (IS_VAR == IS_CV && Z_REFCOUNTED_P(value)) {
Z_ADDREF_P(value);
@@ -28278,15 +28170,11 @@ fast_assign_obj:
value = &tmp;
} else {
value = Z_REFVAL_P(value);
- if (Z_REFCOUNTED_P(value)) {
- Z_ADDREF_P(value);
- }
+ Z_TRY_ADDREF_P(value);
}
} else {
value = Z_REFVAL_P(value);
- if (Z_REFCOUNTED_P(value)) {
- Z_ADDREF_P(value);
- }
+ Z_TRY_ADDREF_P(value);
}
} else if (IS_CV == IS_CV && Z_REFCOUNTED_P(value)) {
Z_ADDREF_P(value);
@@ -30441,15 +30329,11 @@ fast_assign_obj:
value = &tmp;
} else {
value = Z_REFVAL_P(value);
- if (Z_REFCOUNTED_P(value)) {
- Z_ADDREF_P(value);
- }
+ Z_TRY_ADDREF_P(value);
}
} else {
value = Z_REFVAL_P(value);
- if (Z_REFCOUNTED_P(value)) {
- Z_ADDREF_P(value);
- }
+ Z_TRY_ADDREF_P(value);
}
} else if (IS_CONST == IS_CV && Z_REFCOUNTED_P(value)) {
Z_ADDREF_P(value);
@@ -30599,15 +30483,11 @@ fast_assign_obj:
value = &tmp;
} else {
value = Z_REFVAL_P(value);
- if (Z_REFCOUNTED_P(value)) {
- Z_ADDREF_P(value);
- }
+ Z_TRY_ADDREF_P(value);
}
} else {
value = Z_REFVAL_P(value);
- if (Z_REFCOUNTED_P(value)) {
- Z_ADDREF_P(value);
- }
+ Z_TRY_ADDREF_P(value);
}
} else if (IS_TMP_VAR == IS_CV && Z_REFCOUNTED_P(value)) {
Z_ADDREF_P(value);
@@ -30757,15 +30637,11 @@ fast_assign_obj:
value = &tmp;
} else {
value = Z_REFVAL_P(value);
- if (Z_REFCOUNTED_P(value)) {
- Z_ADDREF_P(value);
- }
+ Z_TRY_ADDREF_P(value);
}
} else {
value = Z_REFVAL_P(value);
- if (Z_REFCOUNTED_P(value)) {
- Z_ADDREF_P(value);
- }
+ Z_TRY_ADDREF_P(value);
}
} else if (IS_VAR == IS_CV && Z_REFCOUNTED_P(value)) {
Z_ADDREF_P(value);
@@ -30915,15 +30791,11 @@ fast_assign_obj:
value = &tmp;
} else {
value = Z_REFVAL_P(value);
- if (Z_REFCOUNTED_P(value)) {
- Z_ADDREF_P(value);
- }
+ Z_TRY_ADDREF_P(value);
}
} else {
value = Z_REFVAL_P(value);
- if (Z_REFCOUNTED_P(value)) {
- Z_ADDREF_P(value);
- }
+ Z_TRY_ADDREF_P(value);
}
} else if (IS_CV == IS_CV && Z_REFCOUNTED_P(value)) {
Z_ADDREF_P(value);
@@ -32201,15 +32073,11 @@ fast_assign_obj:
value = &tmp;
} else {
value = Z_REFVAL_P(value);
- if (Z_REFCOUNTED_P(value)) {
- Z_ADDREF_P(value);
- }
+ Z_TRY_ADDREF_P(value);
}
} else {
value = Z_REFVAL_P(value);
- if (Z_REFCOUNTED_P(value)) {
- Z_ADDREF_P(value);
- }
+ Z_TRY_ADDREF_P(value);
}
} else if (IS_CONST == IS_CV && Z_REFCOUNTED_P(value)) {
Z_ADDREF_P(value);
@@ -32359,15 +32227,11 @@ fast_assign_obj:
value = &tmp;
} else {
value = Z_REFVAL_P(value);
- if (Z_REFCOUNTED_P(value)) {
- Z_ADDREF_P(value);
- }
+ Z_TRY_ADDREF_P(value);
}
} else {
value = Z_REFVAL_P(value);
- if (Z_REFCOUNTED_P(value)) {
- Z_ADDREF_P(value);
- }
+ Z_TRY_ADDREF_P(value);
}
} else if (IS_TMP_VAR == IS_CV && Z_REFCOUNTED_P(value)) {
Z_ADDREF_P(value);
@@ -32517,15 +32381,11 @@ fast_assign_obj:
value = &tmp;
} else {
value = Z_REFVAL_P(value);
- if (Z_REFCOUNTED_P(value)) {
- Z_ADDREF_P(value);
- }
+ Z_TRY_ADDREF_P(value);
}
} else {
value = Z_REFVAL_P(value);
- if (Z_REFCOUNTED_P(value)) {
- Z_ADDREF_P(value);
- }
+ Z_TRY_ADDREF_P(value);
}
} else if (IS_VAR == IS_CV && Z_REFCOUNTED_P(value)) {
Z_ADDREF_P(value);
@@ -32675,15 +32535,11 @@ fast_assign_obj:
value = &tmp;
} else {
value = Z_REFVAL_P(value);
- if (Z_REFCOUNTED_P(value)) {
- Z_ADDREF_P(value);
- }
+ Z_TRY_ADDREF_P(value);
}
} else {
value = Z_REFVAL_P(value);
- if (Z_REFCOUNTED_P(value)) {
- Z_ADDREF_P(value);
- }
+ Z_TRY_ADDREF_P(value);
}
} else if (IS_CV == IS_CV && Z_REFCOUNTED_P(value)) {
Z_ADDREF_P(value);
@@ -33676,7 +33532,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_RETURN_BY_REF_SPEC_CV_HANDLER(
ZVAL_NEW_REF(EX(return_value), retval_ptr);
if (IS_CV == IS_CONST) {
- if (Z_REFCOUNTED_P(retval_ptr)) Z_ADDREF_P(retval_ptr);
+ Z_TRY_ADDREF_P(retval_ptr);
}
}
break;
@@ -33784,7 +33640,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_THROW_SPEC_CV_HANDLER(ZEND_OPC
zend_exception_save();
if (IS_CV != IS_TMP_VAR) {
- if (Z_REFCOUNTED_P(value)) Z_ADDREF_P(value);
+ Z_TRY_ADDREF_P(value);
}
zend_throw_exception_object(value);
@@ -36779,15 +36635,11 @@ fast_assign_obj:
value = &tmp;
} else {
value = Z_REFVAL_P(value);
- if (Z_REFCOUNTED_P(value)) {
- Z_ADDREF_P(value);
- }
+ Z_TRY_ADDREF_P(value);
}
} else {
value = Z_REFVAL_P(value);
- if (Z_REFCOUNTED_P(value)) {
- Z_ADDREF_P(value);
- }
+ Z_TRY_ADDREF_P(value);
}
} else if (IS_CONST == IS_CV && Z_REFCOUNTED_P(value)) {
Z_ADDREF_P(value);
@@ -36937,15 +36789,11 @@ fast_assign_obj:
value = &tmp;
} else {
value = Z_REFVAL_P(value);
- if (Z_REFCOUNTED_P(value)) {
- Z_ADDREF_P(value);
- }
+ Z_TRY_ADDREF_P(value);
}
} else {
value = Z_REFVAL_P(value);
- if (Z_REFCOUNTED_P(value)) {
- Z_ADDREF_P(value);
- }
+ Z_TRY_ADDREF_P(value);
}
} else if (IS_TMP_VAR == IS_CV && Z_REFCOUNTED_P(value)) {
Z_ADDREF_P(value);
@@ -37095,15 +36943,11 @@ fast_assign_obj:
value = &tmp;
} else {
value = Z_REFVAL_P(value);
- if (Z_REFCOUNTED_P(value)) {
- Z_ADDREF_P(value);
- }
+ Z_TRY_ADDREF_P(value);
}
} else {
value = Z_REFVAL_P(value);
- if (Z_REFCOUNTED_P(value)) {
- Z_ADDREF_P(value);
- }
+ Z_TRY_ADDREF_P(value);
}
} else if (IS_VAR == IS_CV && Z_REFCOUNTED_P(value)) {
Z_ADDREF_P(value);
@@ -37253,15 +37097,11 @@ fast_assign_obj:
value = &tmp;
} else {
value = Z_REFVAL_P(value);
- if (Z_REFCOUNTED_P(value)) {
- Z_ADDREF_P(value);
- }
+ Z_TRY_ADDREF_P(value);
}
} else {
value = Z_REFVAL_P(value);
- if (Z_REFCOUNTED_P(value)) {
- Z_ADDREF_P(value);
- }
+ Z_TRY_ADDREF_P(value);
}
} else if (IS_CV == IS_CV && Z_REFCOUNTED_P(value)) {
Z_ADDREF_P(value);
@@ -38046,14 +37886,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_CONS
if (IS_CV == IS_TMP_VAR) {
/* pass */
} else if (IS_CV == IS_CONST) {
- if (Z_REFCOUNTED_P(expr_ptr)) {
- Z_ADDREF_P(expr_ptr);
- }
+ Z_TRY_ADDREF_P(expr_ptr);
} else if (IS_CV == IS_CV) {
ZVAL_DEREF(expr_ptr);
- if (Z_REFCOUNTED_P(expr_ptr)) {
- Z_ADDREF_P(expr_ptr);
- }
+ Z_TRY_ADDREF_P(expr_ptr);
} else /* if (IS_CV == IS_VAR) */ {
if (UNEXPECTED(Z_ISREF_P(expr_ptr))) {
zend_refcounted *ref = Z_COUNTED_P(expr_ptr);
@@ -40744,14 +40580,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_UNUS
if (IS_CV == IS_TMP_VAR) {
/* pass */
} else if (IS_CV == IS_CONST) {
- if (Z_REFCOUNTED_P(expr_ptr)) {
- Z_ADDREF_P(expr_ptr);
- }
+ Z_TRY_ADDREF_P(expr_ptr);
} else if (IS_CV == IS_CV) {
ZVAL_DEREF(expr_ptr);
- if (Z_REFCOUNTED_P(expr_ptr)) {
- Z_ADDREF_P(expr_ptr);
- }
+ Z_TRY_ADDREF_P(expr_ptr);
} else /* if (IS_CV == IS_VAR) */ {
if (UNEXPECTED(Z_ISREF_P(expr_ptr))) {
zend_refcounted *ref = Z_COUNTED_P(expr_ptr);
@@ -43254,15 +43086,11 @@ fast_assign_obj:
value = &tmp;
} else {
value = Z_REFVAL_P(value);
- if (Z_REFCOUNTED_P(value)) {
- Z_ADDREF_P(value);
- }
+ Z_TRY_ADDREF_P(value);
}
} else {
value = Z_REFVAL_P(value);
- if (Z_REFCOUNTED_P(value)) {
- Z_ADDREF_P(value);
- }
+ Z_TRY_ADDREF_P(value);
}
} else if (IS_CONST == IS_CV && Z_REFCOUNTED_P(value)) {
Z_ADDREF_P(value);
@@ -43412,15 +43240,11 @@ fast_assign_obj:
value = &tmp;
} else {
value = Z_REFVAL_P(value);
- if (Z_REFCOUNTED_P(value)) {
- Z_ADDREF_P(value);
- }
+ Z_TRY_ADDREF_P(value);
}
} else {
value = Z_REFVAL_P(value);
- if (Z_REFCOUNTED_P(value)) {
- Z_ADDREF_P(value);
- }
+ Z_TRY_ADDREF_P(value);
}
} else if (IS_TMP_VAR == IS_CV && Z_REFCOUNTED_P(value)) {
Z_ADDREF_P(value);
@@ -43570,15 +43394,11 @@ fast_assign_obj:
value = &tmp;
} else {
value = Z_REFVAL_P(value);
- if (Z_REFCOUNTED_P(value)) {
- Z_ADDREF_P(value);
- }
+ Z_TRY_ADDREF_P(value);
}
} else {
value = Z_REFVAL_P(value);
- if (Z_REFCOUNTED_P(value)) {
- Z_ADDREF_P(value);
- }
+ Z_TRY_ADDREF_P(value);
}
} else if (IS_VAR == IS_CV && Z_REFCOUNTED_P(value)) {
Z_ADDREF_P(value);
@@ -43728,15 +43548,11 @@ fast_assign_obj:
value = &tmp;
} else {
value = Z_REFVAL_P(value);
- if (Z_REFCOUNTED_P(value)) {
- Z_ADDREF_P(value);
- }
+ Z_TRY_ADDREF_P(value);
}
} else {
value = Z_REFVAL_P(value);
- if (Z_REFCOUNTED_P(value)) {
- Z_ADDREF_P(value);
- }
+ Z_TRY_ADDREF_P(value);
}
} else if (IS_CV == IS_CV && Z_REFCOUNTED_P(value)) {
Z_ADDREF_P(value);
@@ -44577,14 +44393,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_CV_H
if (IS_CV == IS_TMP_VAR) {
/* pass */
} else if (IS_CV == IS_CONST) {
- if (Z_REFCOUNTED_P(expr_ptr)) {
- Z_ADDREF_P(expr_ptr);
- }
+ Z_TRY_ADDREF_P(expr_ptr);
} else if (IS_CV == IS_CV) {
ZVAL_DEREF(expr_ptr);
- if (Z_REFCOUNTED_P(expr_ptr)) {
- Z_ADDREF_P(expr_ptr);
- }
+ Z_TRY_ADDREF_P(expr_ptr);
} else /* if (IS_CV == IS_VAR) */ {
if (UNEXPECTED(Z_ISREF_P(expr_ptr))) {
zend_refcounted *ref = Z_COUNTED_P(expr_ptr);
@@ -46969,15 +46781,11 @@ fast_assign_obj:
value = &tmp;
} else {
value = Z_REFVAL_P(value);
- if (Z_REFCOUNTED_P(value)) {
- Z_ADDREF_P(value);
- }
+ Z_TRY_ADDREF_P(value);
}
} else {
value = Z_REFVAL_P(value);
- if (Z_REFCOUNTED_P(value)) {
- Z_ADDREF_P(value);
- }
+ Z_TRY_ADDREF_P(value);
}
} else if (IS_CONST == IS_CV && Z_REFCOUNTED_P(value)) {
Z_ADDREF_P(value);
@@ -47127,15 +46935,11 @@ fast_assign_obj:
value = &tmp;
} else {
value = Z_REFVAL_P(value);
- if (Z_REFCOUNTED_P(value)) {
- Z_ADDREF_P(value);
- }
+ Z_TRY_ADDREF_P(value);
}
} else {
value = Z_REFVAL_P(value);
- if (Z_REFCOUNTED_P(value)) {
- Z_ADDREF_P(value);
- }
+ Z_TRY_ADDREF_P(value);
}
} else if (IS_TMP_VAR == IS_CV && Z_REFCOUNTED_P(value)) {
Z_ADDREF_P(value);
@@ -47285,15 +47089,11 @@ fast_assign_obj:
value = &tmp;
} else {
value = Z_REFVAL_P(value);
- if (Z_REFCOUNTED_P(value)) {
- Z_ADDREF_P(value);
- }
+ Z_TRY_ADDREF_P(value);
}
} else {
value = Z_REFVAL_P(value);
- if (Z_REFCOUNTED_P(value)) {
- Z_ADDREF_P(value);
- }
+ Z_TRY_ADDREF_P(value);
}
} else if (IS_VAR == IS_CV && Z_REFCOUNTED_P(value)) {
Z_ADDREF_P(value);
@@ -47443,15 +47243,11 @@ fast_assign_obj:
value = &tmp;
} else {
value = Z_REFVAL_P(value);
- if (Z_REFCOUNTED_P(value)) {
- Z_ADDREF_P(value);
- }
+ Z_TRY_ADDREF_P(value);
}
} else {
value = Z_REFVAL_P(value);
- if (Z_REFCOUNTED_P(value)) {
- Z_ADDREF_P(value);
- }
+ Z_TRY_ADDREF_P(value);
}
} else if (IS_CV == IS_CV && Z_REFCOUNTED_P(value)) {
Z_ADDREF_P(value);
@@ -48181,14 +47977,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_TMPV
if (IS_CV == IS_TMP_VAR) {
/* pass */
} else if (IS_CV == IS_CONST) {
- if (Z_REFCOUNTED_P(expr_ptr)) {
- Z_ADDREF_P(expr_ptr);
- }
+ Z_TRY_ADDREF_P(expr_ptr);
} else if (IS_CV == IS_CV) {
ZVAL_DEREF(expr_ptr);
- if (Z_REFCOUNTED_P(expr_ptr)) {
- Z_ADDREF_P(expr_ptr);
- }
+ Z_TRY_ADDREF_P(expr_ptr);
} else /* if (IS_CV == IS_VAR) */ {
if (UNEXPECTED(Z_ISREF_P(expr_ptr))) {
zend_refcounted *ref = Z_COUNTED_P(expr_ptr);
diff --git a/ext/pcntl/pcntl.c b/ext/pcntl/pcntl.c
index f9ea76de4f..52d107419d 100644
--- a/ext/pcntl/pcntl.c
+++ b/ext/pcntl/pcntl.c
@@ -1040,7 +1040,7 @@ PHP_FUNCTION(pcntl_signal)
/* Add the function name to our signal table */
if (zend_hash_index_update(&PCNTL_G(php_signal_table), signo, handle)) {
- if (Z_REFCOUNTED_P(handle)) Z_ADDREF_P(handle);
+ Z_TRY_ADDREF_P(handle);
}
if (php_signal4(signo, pcntl_signal_handler, (int) restart_syscalls, 1) == (Sigfunc *)SIG_ERR) {
diff --git a/ext/pcre/php_pcre.c b/ext/pcre/php_pcre.c
index 24952beb07..ebf84c0c58 100644
--- a/ext/pcre/php_pcre.c
+++ b/ext/pcre/php_pcre.c
@@ -2602,9 +2602,7 @@ PHPAPI void php_pcre_grep_impl(pcre_cache_entry *pce, zval *input, zval *return
/* If the entry fits our requirements */
if ((count > 0 && !invert) || (count == PCRE_ERROR_NOMATCH && invert)) {
- if (Z_REFCOUNTED_P(entry)) {
- Z_ADDREF_P(entry);
- }
+ Z_TRY_ADDREF_P(entry);
/* Add to return array */
if (string_key) {
diff --git a/ext/pdo/pdo_dbh.c b/ext/pdo/pdo_dbh.c
index be5f1e363f..a89276cfce 100644
--- a/ext/pdo/pdo_dbh.c
+++ b/ext/pdo/pdo_dbh.c
@@ -880,7 +880,7 @@ static PHP_METHOD(PDO, getAttribute)
array_init(return_value);
add_next_index_str(return_value, zend_string_copy(dbh->def_stmt_ce->name));
if (!Z_ISUNDEF(dbh->def_stmt_ctor_args)) {
- if (Z_REFCOUNTED(dbh->def_stmt_ctor_args)) Z_ADDREF(dbh->def_stmt_ctor_args);
+ Z_TRY_ADDREF(dbh->def_stmt_ctor_args);
add_next_index_zval(return_value, &dbh->def_stmt_ctor_args);
}
return;
diff --git a/ext/reflection/php_reflection.c b/ext/reflection/php_reflection.c
index ffa5207ed4..6f19fc77fc 100644
--- a/ext/reflection/php_reflection.c
+++ b/ext/reflection/php_reflection.c
@@ -48,7 +48,7 @@
zval member; \
ZVAL_STR(&member, name); \
zend_std_write_property(object, &member, value, NULL); \
- if (Z_REFCOUNTED_P(value)) Z_DELREF_P(value); \
+ Z_TRY_DELREF_P(value); \
zval_ptr_dtor(&member); \
} while (0)
@@ -4762,7 +4762,7 @@ ZEND_METHOD(reflection_class, newInstance)
}
for (i = 0; i < num_args; i++) {
- if (Z_REFCOUNTED(params[i])) Z_ADDREF(params[i]);
+ Z_TRY_ADDREF(params[i]);
}
fci.size = sizeof(fci);
diff --git a/ext/soap/php_encoding.c b/ext/soap/php_encoding.c
index 16b15698c5..057a367655 100644
--- a/ext/soap/php_encoding.c
+++ b/ext/soap/php_encoding.c
@@ -1169,7 +1169,7 @@ static xmlNodePtr to_xml_null(encodeTypePtr type, zval *data, int style, xmlNode
static void set_zval_property(zval* object, char* name, zval* val)
{
zend_update_property(Z_OBJCE_P(object), object, name, strlen(name), val);
- if (Z_REFCOUNTED_P(val)) Z_DELREF_P(val);
+ Z_TRY_DELREF_P(val);
}
static zval* get_zval_property(zval* object, char* name, zval *rv)
diff --git a/ext/spl/spl_heap.c b/ext/spl/spl_heap.c
index 3b179c523f..db8f8d9779 100644
--- a/ext/spl/spl_heap.c
+++ b/ext/spl/spl_heap.c
@@ -590,7 +590,7 @@ SPL_METHOD(SplHeap, insert)
return;
}
- if (Z_REFCOUNTED_P(value)) Z_ADDREF_P(value);
+ Z_TRY_ADDREF_P(value);
spl_ptr_heap_insert(intern->heap, value, getThis());
RETURN_TRUE;
@@ -641,8 +641,8 @@ SPL_METHOD(SplPriorityQueue, insert)
return;
}
- if (Z_REFCOUNTED_P(data)) Z_ADDREF_P(data);
- if (Z_REFCOUNTED_P(priority)) Z_ADDREF_P(priority);
+ Z_TRY_ADDREF_P(data);
+ Z_TRY_ADDREF_P(priority);
array_init(&elem);
add_assoc_zval_ex(&elem, "data", sizeof("data") - 1, data);
diff --git a/ext/standard/array.c b/ext/standard/array.c
index 0cd2c5c64a..f40160d3bd 100644
--- a/ext/standard/array.c
+++ b/ext/standard/array.c
@@ -1807,10 +1807,9 @@ static zend_long php_extract_if_exists(zend_array *arr, zend_array *symbol_table
continue;
}
ZVAL_DEREF(entry);
- if (Z_REFCOUNTED_P(entry)) Z_ADDREF_P(entry);
ZVAL_DEREF(orig_var);
zval_ptr_dtor(orig_var);
- ZVAL_COPY_VALUE(orig_var, entry);
+ ZVAL_COPY(orig_var, entry);
count++;
}
} ZEND_HASH_FOREACH_END();
@@ -1894,13 +1893,12 @@ static zend_long php_extract_overwrite(zend_array *arr, zend_array *symbol_table
continue;
}
ZVAL_DEREF(entry);
- if (Z_REFCOUNTED_P(entry)) Z_ADDREF_P(entry);
ZVAL_DEREF(orig_var);
zval_ptr_dtor(orig_var);
- ZVAL_COPY_VALUE(orig_var, entry);
+ ZVAL_COPY(orig_var, entry);
} else {
ZVAL_DEREF(entry);
- if (Z_REFCOUNTED_P(entry)) Z_ADDREF_P(entry);
+ Z_TRY_ADDREF_P(entry);
zend_hash_add_new(symbol_table, var_name, entry);
}
count++;
@@ -1980,8 +1978,7 @@ static zend_long php_extract_prefix_if_exists(zend_array *arr, zend_array *symbo
orig_var = Z_INDIRECT_P(orig_var);
if (Z_TYPE_P(orig_var) == IS_UNDEF) {
ZVAL_DEREF(entry);
- if (Z_REFCOUNTED_P(entry)) Z_ADDREF_P(entry);
- ZVAL_COPY_VALUE(orig_var, entry);
+ ZVAL_COPY(orig_var, entry);
count++;
continue;
}
@@ -1995,15 +1992,15 @@ static zend_long php_extract_prefix_if_exists(zend_array *arr, zend_array *symbo
}
} else {
ZVAL_DEREF(entry);
- if (Z_REFCOUNTED_P(entry)) Z_ADDREF_P(entry);
if ((orig_var = zend_hash_find(symbol_table, Z_STR(final_name))) != NULL) {
if (Z_TYPE_P(orig_var) == IS_INDIRECT) {
orig_var = Z_INDIRECT_P(orig_var);
}
ZVAL_DEREF(orig_var);
zval_ptr_dtor(orig_var);
- ZVAL_COPY_VALUE(orig_var, entry);
+ ZVAL_COPY(orig_var, entry);
} else {
+ Z_TRY_ADDREF_P(entry);
zend_hash_add_new(symbol_table, Z_STR(final_name), entry);
}
count++;
@@ -2108,8 +2105,7 @@ static zend_long php_extract_prefix_same(zend_array *arr, zend_array *symbol_tab
orig_var = Z_INDIRECT_P(orig_var);
if (Z_TYPE_P(orig_var) == IS_UNDEF) {
ZVAL_DEREF(entry);
- if (Z_REFCOUNTED_P(entry)) Z_ADDREF_P(entry);
- ZVAL_COPY_VALUE(orig_var, entry);
+ ZVAL_COPY(orig_var, entry);
count++;
continue;
}
@@ -2123,15 +2119,15 @@ static zend_long php_extract_prefix_same(zend_array *arr, zend_array *symbol_tab
}
} else {
ZVAL_DEREF(entry);
- if (Z_REFCOUNTED_P(entry)) Z_ADDREF_P(entry);
if ((orig_var = zend_hash_find(symbol_table, Z_STR(final_name))) != NULL) {
if (Z_TYPE_P(orig_var) == IS_INDIRECT) {
orig_var = Z_INDIRECT_P(orig_var);
}
ZVAL_DEREF(orig_var);
zval_ptr_dtor(orig_var);
- ZVAL_COPY_VALUE(orig_var, entry);
+ ZVAL_COPY(orig_var, entry);
} else {
+ Z_TRY_ADDREF_P(entry);
zend_hash_add_new(symbol_table, Z_STR(final_name), entry);
}
count++;
@@ -2150,7 +2146,7 @@ static zend_long php_extract_prefix_same(zend_array *arr, zend_array *symbol_tab
continue;
}
ZVAL_DEREF(entry);
- if (Z_REFCOUNTED_P(entry)) Z_ADDREF_P(entry);
+ Z_TRY_ADDREF_P(entry);
zend_hash_add_new(symbol_table, var_name, entry);
count++;
}
@@ -2234,15 +2230,15 @@ static zend_long php_extract_prefix_all(zend_array *arr, zend_array *symbol_tabl
}
} else {
ZVAL_DEREF(entry);
- if (Z_REFCOUNTED_P(entry)) Z_ADDREF_P(entry);
if ((orig_var = zend_hash_find(symbol_table, Z_STR(final_name))) != NULL) {
if (Z_TYPE_P(orig_var) == IS_INDIRECT) {
orig_var = Z_INDIRECT_P(orig_var);
}
ZVAL_DEREF(orig_var);
zval_ptr_dtor(orig_var);
- ZVAL_COPY_VALUE(orig_var, entry);
+ ZVAL_COPY(orig_var, entry);
} else {
+ Z_TRY_ADDREF_P(entry);
zend_hash_add_new(symbol_table, Z_STR(final_name), entry);
}
count++;
@@ -2344,15 +2340,15 @@ static zend_long php_extract_prefix_invalid(zend_array *arr, zend_array *symbol_
}
} else {
ZVAL_DEREF(entry);
- if (Z_REFCOUNTED_P(entry)) Z_ADDREF_P(entry);
if ((orig_var = zend_hash_find(symbol_table, Z_STR(final_name))) != NULL) {
if (Z_TYPE_P(orig_var) == IS_INDIRECT) {
orig_var = Z_INDIRECT_P(orig_var);
}
ZVAL_DEREF(orig_var);
zval_ptr_dtor(orig_var);
- ZVAL_COPY_VALUE(orig_var, entry);
+ ZVAL_COPY(orig_var, entry);
} else {
+ Z_TRY_ADDREF_P(entry);
zend_hash_add_new(symbol_table, Z_STR(final_name), entry);
}
count++;
@@ -2435,14 +2431,13 @@ static zend_long php_extract_skip(zend_array *arr, zend_array *symbol_table) /*
orig_var = Z_INDIRECT_P(orig_var);
if (Z_TYPE_P(orig_var) == IS_UNDEF) {
ZVAL_DEREF(entry);
- if (Z_REFCOUNTED_P(entry)) Z_ADDREF_P(entry);
- ZVAL_COPY_VALUE(orig_var, entry);
+ ZVAL_COPY(orig_var, entry);
count++;
}
}
} else {
ZVAL_DEREF(entry);
- if (Z_REFCOUNTED_P(entry)) Z_ADDREF_P(entry);
+ Z_TRY_ADDREF_P(entry);
zend_hash_add_new(symbol_table, var_name, entry);
count++;
}
@@ -3098,9 +3093,7 @@ static void php_splice(HashTable *in_hash, zend_long offset, zend_long length, H
if (Z_TYPE(p->val) == IS_UNDEF) continue;
pos++;
entry = &p->val;
- if (Z_REFCOUNTED_P(entry)) {
- Z_ADDREF_P(entry);
- }
+ Z_TRY_ADDREF_P(entry);
if (p->key == NULL) {
zend_hash_next_index_insert_new(removed, entry);
zend_hash_index_del(in_hash, p->h);
@@ -3136,7 +3129,7 @@ static void php_splice(HashTable *in_hash, zend_long offset, zend_long length, H
/* If there are entries to insert.. */
if (replace) {
ZEND_HASH_FOREACH_VAL_IND(replace, entry) {
- if (Z_REFCOUNTED_P(entry)) Z_ADDREF_P(entry);
+ Z_TRY_ADDREF_P(entry);
zend_hash_next_index_insert_new(&out_hash, entry);
pos++;
} ZEND_HASH_FOREACH_END();
@@ -3200,7 +3193,7 @@ PHP_FUNCTION(array_push)
ZVAL_COPY(&new_var, &args[i]);
if (zend_hash_next_index_insert(Z_ARRVAL_P(stack), &new_var) == NULL) {
- if (Z_REFCOUNTED(new_var)) Z_DELREF(new_var);
+ Z_TRY_DELREF(new_var);
php_error_docref(NULL, E_WARNING, "Cannot add element to the array as the next element is already occupied");
RETURN_FALSE;
}
@@ -3397,9 +3390,7 @@ PHP_FUNCTION(array_unshift)
zend_hash_init(&new_hash, zend_hash_num_elements(Z_ARRVAL_P(stack)) + argc, NULL, ZVAL_PTR_DTOR, 0);
for (i = 0; i < argc; i++) {
- if (Z_REFCOUNTED(args[i])) {
- Z_ADDREF(args[i]);
- }
+ Z_TRY_ADDREF(args[i]);
zend_hash_next_index_insert_new(&new_hash, &args[i]);
}
if (EXPECTED(Z_ARRVAL_P(stack)->u.v.nIteratorsCount == 0)) {
@@ -3668,9 +3659,7 @@ PHPAPI int php_array_merge_recursive(HashTable *dest, HashTable *src) /* {{{ */
return 0;
}
} else {
- if (Z_REFCOUNTED_P(src_entry)) {
- Z_ADDREF_P(src_entry);
- }
+ Z_TRY_ADDREF_P(src_entry);
zend_hash_next_index_insert(Z_ARRVAL_P(dest_zval), src_zval);
}
zval_ptr_dtor(&tmp);
@@ -4662,9 +4651,7 @@ static void php_array_intersect_key(INTERNAL_FUNCTION_PARAMETERS, int data_compa
}
}
if (ok) {
- if (Z_REFCOUNTED_P(val)) {
- Z_ADDREF_P(val);
- }
+ Z_TRY_ADDREF_P(val);
zend_hash_index_update(Z_ARRVAL_P(return_value), p->h, val);
}
} else {
@@ -4679,9 +4666,7 @@ static void php_array_intersect_key(INTERNAL_FUNCTION_PARAMETERS, int data_compa
}
}
if (ok) {
- if (Z_REFCOUNTED_P(val)) {
- Z_ADDREF_P(val);
- }
+ Z_TRY_ADDREF_P(val);
zend_hash_update(Z_ARRVAL_P(return_value), p->key, val);
}
}
@@ -5078,9 +5063,7 @@ static void php_array_diff_key(INTERNAL_FUNCTION_PARAMETERS, int data_compare_ty
}
}
if (ok) {
- if (Z_REFCOUNTED_P(val)) {
- Z_ADDREF_P(val);
- }
+ Z_TRY_ADDREF_P(val);
zend_hash_index_update(Z_ARRVAL_P(return_value), p->h, val);
}
} else {
@@ -5095,9 +5078,7 @@ static void php_array_diff_key(INTERNAL_FUNCTION_PARAMETERS, int data_compare_ty
}
}
if (ok) {
- if (Z_REFCOUNTED_P(val)) {
- Z_ADDREF_P(val);
- }
+ Z_TRY_ADDREF_P(val);
zend_hash_update(Z_ARRVAL_P(return_value), p->key, val);
}
}
diff --git a/ext/standard/basic_functions.c b/ext/standard/basic_functions.c
index 071099c7b9..6b1dbbd2a1 100644
--- a/ext/standard/basic_functions.c
+++ b/ext/standard/basic_functions.c
@@ -5126,7 +5126,7 @@ PHP_FUNCTION(register_shutdown_function)
}
for (i = 0; i < shutdown_function_entry.arg_count; i++) {
- if (Z_REFCOUNTED(shutdown_function_entry.arguments[i])) Z_ADDREF(shutdown_function_entry.arguments[i]);
+ Z_TRY_ADDREF(shutdown_function_entry.arguments[i]);
}
zend_hash_next_index_insert_mem(BG(user_shutdown_function_names), &shutdown_function_entry, sizeof(php_shutdown_function_entry));
}
@@ -5776,9 +5776,7 @@ PHP_FUNCTION(register_tick_function)
}
for (i = 0; i < tick_fe.arg_count; i++) {
- if (Z_REFCOUNTED(tick_fe.arguments[i])) {
- Z_ADDREF(tick_fe.arguments[i]);
- }
+ Z_TRY_ADDREF(tick_fe.arguments[i]);
}
zend_llist_add_element(BG(user_tick_functions), &tick_fe);
diff --git a/ext/standard/streamsfuncs.c b/ext/standard/streamsfuncs.c
index 3cb23b7165..72a429a697 100644
--- a/ext/standard/streamsfuncs.c
+++ b/ext/standard/streamsfuncs.c
@@ -1075,10 +1075,10 @@ PHP_FUNCTION(stream_context_get_params)
array_init(return_value);
if (context->notifier && Z_TYPE(context->notifier->ptr) != IS_UNDEF && context->notifier->func == user_space_stream_notifier) {
+ Z_TRY_ADDREF(context->notifier->ptr);
add_assoc_zval_ex(return_value, "notification", sizeof("notification")-1, &context->notifier->ptr);
- if (Z_REFCOUNTED(context->notifier->ptr)) Z_ADDREF(context->notifier->ptr);
}
- if (Z_REFCOUNTED(context->options)) Z_ADDREF(context->options);
+ Z_TRY_ADDREF(context->options);
add_assoc_zval_ex(return_value, "options", sizeof("options")-1, &context->options);
}
/* }}} */
diff --git a/ext/wddx/wddx.c b/ext/wddx/wddx.c
index 556af05112..85b3a6438c 100644
--- a/ext/wddx/wddx.c
+++ b/ext/wddx/wddx.c
@@ -315,7 +315,7 @@ PS_SERIALIZER_DECODE_FUNC(wddx)
zend_string_addref(key);
}
if (php_set_session_var(key, ent, NULL)) {
- if (Z_REFCOUNTED_P(ent)) Z_ADDREF_P(ent);
+ Z_TRY_ADDREF_P(ent);
}
PS_ADD_VAR(key);
zend_string_release(key);
diff --git a/main/php_variables.c b/main/php_variables.c
index 1052e16edf..6d0970c85f 100644
--- a/main/php_variables.c
+++ b/main/php_variables.c
@@ -663,15 +663,13 @@ static void php_autoglobal_merge(HashTable *dest, HashTable *src)
|| (string_key && (dest_entry = zend_hash_find(dest, string_key)) == NULL)
|| (string_key == NULL && (dest_entry = zend_hash_index_find(dest, num_key)) == NULL)
|| Z_TYPE_P(dest_entry) != IS_ARRAY) {
- if (Z_REFCOUNTED_P(src_entry)) {
- Z_ADDREF_P(src_entry);
- }
+ Z_TRY_ADDREF_P(src_entry);
if (string_key) {
if (!globals_check || ZSTR_LEN(string_key) != sizeof("GLOBALS") - 1
|| memcmp(ZSTR_VAL(string_key), "GLOBALS", sizeof("GLOBALS") - 1)) {
zend_hash_update(dest, string_key, src_entry);
- } else if (Z_REFCOUNTED_P(src_entry)) {
- Z_DELREF_P(src_entry);
+ } else {
+ Z_TRY_DELREF_P(src_entry);
}
} else {
zend_hash_index_update(dest, num_key, src_entry);