From: Dmitry Stogov Date: Fri, 21 Feb 2014 16:35:40 +0000 (+0400) Subject: Fixed assertions X-Git-Tag: POST_PHPNG_MERGE~412^2~593 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=52bd62eca819e43e0fc6788c0ec4670ca4c8cddf;p=php Fixed assertions --- diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c index c8c7b90adb..9219e2859a 100644 --- a/Zend/zend_compile.c +++ b/Zend/zend_compile.c @@ -4460,7 +4460,7 @@ static void zend_do_traits_property_binding(zend_class_entry *ce TSRMLS_DC) /* { } else { prop_value = &ce->traits[i]->default_properties_table[property_info->offset]; } - Z_ADDREF_P(prop_value); + if (Z_REFCOUNTED_P(prop_value)) Z_ADDREF_P(prop_value); //??? doc_comment = property_info->doc_comment ? STR_DUP(property_info->doc_comment, 0) : NULL; zend_declare_property_ex(ce, prop_name, diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c index 21efb7fdd2..d02a039ab2 100644 --- a/Zend/zend_execute.c +++ b/Zend/zend_execute.c @@ -110,7 +110,7 @@ static zend_always_inline void zend_pzval_unlock_free_func(zval *z TSRMLS_DC) #define PZVAL_UNLOCK(z, f) zend_pzval_unlock_func(z, f, 1 TSRMLS_CC) #define PZVAL_UNLOCK_EX(z, f, u) zend_pzval_unlock_func(z, f, u TSRMLS_CC) #define PZVAL_UNLOCK_FREE(z) zend_pzval_unlock_free_func(z TSRMLS_CC) -#define PZVAL_LOCK(z) Z_ADDREF_P((z)) +#define PZVAL_LOCK(z) if (Z_REFCOUNTED_P(z)) Z_ADDREF_P((z)) #define SELECTIVE_PZVAL_LOCK(pzv, opline) if (RETURN_VALUE_USED(opline)) { PZVAL_LOCK(pzv); } #define EXTRACT_ZVAL_PTR(t) do { \ diff --git a/Zend/zend_execute_API.c b/Zend/zend_execute_API.c index e0dede14f5..dd27e65656 100644 --- a/Zend/zend_execute_API.c +++ b/Zend/zend_execute_API.c @@ -1582,8 +1582,10 @@ typedef struct _zend_abstract_info { int ctor; } zend_abstract_info; -static int zend_verify_abstract_class_function(zend_function *fn, zend_abstract_info *ai TSRMLS_DC) /* {{{ */ +static int zend_verify_abstract_class_function(zval *zv, zend_abstract_info *ai TSRMLS_DC) /* {{{ */ { + zend_function *fn = Z_PTR_P(zv); + if (fn->common.fn_flags & ZEND_ACC_ABSTRACT) { if (ai->cnt < MAX_ABSTRACT_INFO_CNT) { ai->afn[ai->cnt] = fn; diff --git a/Zend/zend_object_handlers.c b/Zend/zend_object_handlers.c index 9029f45cc4..fea71d644a 100644 --- a/Zend/zend_object_handlers.c +++ b/Zend/zend_object_handlers.c @@ -180,7 +180,7 @@ static int zend_std_call_setter(zval *object, zval *member, zval *value TSRMLS_D zend_class_entry *ce = Z_OBJCE_P(object); SEPARATE_ARG_IF_REF(member); - Z_ADDREF_P(value); + if (Z_REFCOUNTED_P(value)) Z_ADDREF_P(value); /* __set handler is called with two arguments: property name @@ -664,7 +664,7 @@ zval *zend_std_read_dimension(zval *object, zval *offset, int type TSRMLS_DC) /* } /* Undo PZVAL_LOCK() */ - Z_DELREF(retval); + if (Z_REFCOUNTED(retval)) Z_DELREF(retval); // TODO: FIXME??? //???return &retval; diff --git a/Zend/zend_operators.c b/Zend/zend_operators.c index 4edd202bfc..8ead9201ed 100644 --- a/Zend/zend_operators.c +++ b/Zend/zend_operators.c @@ -1509,11 +1509,13 @@ ZEND_API int numeric_compare_function(zval *result, zval *op1, zval *op2 TSRMLS_ static inline void zend_free_obj_get_result(zval *op TSRMLS_DC) /* {{{ */ { - if (Z_REFCOUNT_P(op) == 0) { - GC_REMOVE_ZVAL_FROM_BUFFER(op); - zval_dtor(op); - } else { - zval_ptr_dtor(op); + if (Z_REFCOUNTED_P(op)) { + if (Z_REFCOUNT_P(op) == 0) { + GC_REMOVE_ZVAL_FROM_BUFFER(op); + zval_dtor(op); + } else { + zval_ptr_dtor(op); + } } } /* }}} */ diff --git a/Zend/zend_vm_def.h b/Zend/zend_vm_def.h index b599f22d60..b4141c99ab 100644 --- a/Zend/zend_vm_def.h +++ b/Zend/zend_vm_def.h @@ -1361,9 +1361,9 @@ ZEND_VM_HANDLER(85, ZEND_FETCH_OBJ_W, VAR|UNUSED|CV, CONST|TMP|VAR|CV) if (opline->extended_value & ZEND_FETCH_MAKE_REF) { zval *retval_ptr = EX_VAR(opline->result.var); - Z_DELREF_P(retval_ptr); +//??? Z_DELREF_P(retval_ptr); SEPARATE_ZVAL_TO_MAKE_IS_REF(retval_ptr); - Z_ADDREF_P(retval_ptr); +//??? Z_ADDREF_P(retval_ptr); //??? EX_T(opline->result.var).var.ptr = *EX_T(opline->result.var).var.ptr_ptr; //??? EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; } @@ -4132,7 +4132,7 @@ ZEND_VM_HANDLER(77, ZEND_FE_RESET, CONST|TMP|VAR|CV, ANY) ZVAL_NEW_REF(array_ptr, array_ptr); } } - Z_ADDREF_P(array_ptr); + if (Z_REFCOUNTED_P(array_ptr)) Z_ADDREF_P(array_ptr); } } else { array_ptr = GET_OP1_ZVAL_PTR(BP_VAR_R); @@ -4154,22 +4154,24 @@ ZEND_VM_HANDLER(77, ZEND_FE_RESET, CONST|TMP|VAR|CV, ANY) Z_ADDREF_P(array_ptr); } } - } else if (OP1_TYPE == IS_CONST || - (OP1_TYPE == IS_CV && - !Z_ISREF_P(array_ptr) && - Z_REFCOUNT_P(array_ptr) > 1) || - (OP1_TYPE == IS_VAR && - !Z_ISREF_P(array_ptr) && - Z_REFCOUNT_P(array_ptr) > 2)) { - zval tmp; - - if (OP1_TYPE == IS_VAR) { - Z_DELREF_P(array_ptr); + } else if (Z_REFCOUNTED_P(array_ptr)) { + if (OP1_TYPE == IS_CONST || + (OP1_TYPE == IS_CV && + !Z_ISREF_P(array_ptr) && + Z_REFCOUNT_P(array_ptr) > 1) || + (OP1_TYPE == IS_VAR && + !Z_ISREF_P(array_ptr) && + Z_REFCOUNT_P(array_ptr) > 2)) { + zval tmp; + + if (OP1_TYPE == IS_VAR) { + Z_DELREF_P(array_ptr); + } + ZVAL_DUP(&tmp, array_ptr); + array_ptr = &tmp; + } else if (OP1_TYPE == IS_CV) { + Z_ADDREF_P(array_ptr); } - ZVAL_DUP(&tmp, array_ptr); - array_ptr = &tmp; - } else if (OP1_TYPE == IS_CV) { - Z_ADDREF_P(array_ptr); } } diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h index 1ae8f24dac..b996805afa 100644 --- a/Zend/zend_vm_execute.h +++ b/Zend/zend_vm_execute.h @@ -2976,7 +2976,7 @@ static int ZEND_FASTCALL ZEND_FE_RESET_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_A ZVAL_NEW_REF(array_ptr, array_ptr); } } - Z_ADDREF_P(array_ptr); + if (Z_REFCOUNTED_P(array_ptr)) Z_ADDREF_P(array_ptr); } } else { array_ptr = opline->op1.zv; @@ -2998,22 +2998,24 @@ static int ZEND_FASTCALL ZEND_FE_RESET_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_A Z_ADDREF_P(array_ptr); } } - } else if (IS_CONST == IS_CONST || - (IS_CONST == IS_CV && - !Z_ISREF_P(array_ptr) && - Z_REFCOUNT_P(array_ptr) > 1) || - (IS_CONST == IS_VAR && - !Z_ISREF_P(array_ptr) && - Z_REFCOUNT_P(array_ptr) > 2)) { - zval tmp; + } else if (Z_REFCOUNTED_P(array_ptr)) { + if (IS_CONST == IS_CONST || + (IS_CONST == IS_CV && + !Z_ISREF_P(array_ptr) && + Z_REFCOUNT_P(array_ptr) > 1) || + (IS_CONST == IS_VAR && + !Z_ISREF_P(array_ptr) && + Z_REFCOUNT_P(array_ptr) > 2)) { + zval tmp; - if (IS_CONST == IS_VAR) { - Z_DELREF_P(array_ptr); + if (IS_CONST == IS_VAR) { + Z_DELREF_P(array_ptr); + } + ZVAL_DUP(&tmp, array_ptr); + array_ptr = &tmp; + } else if (IS_CONST == IS_CV) { + Z_ADDREF_P(array_ptr); } - ZVAL_DUP(&tmp, array_ptr); - array_ptr = &tmp; - } else if (IS_CONST == IS_CV) { - Z_ADDREF_P(array_ptr); } } @@ -7971,7 +7973,7 @@ static int ZEND_FASTCALL ZEND_FE_RESET_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARG ZVAL_NEW_REF(array_ptr, array_ptr); } } - Z_ADDREF_P(array_ptr); + if (Z_REFCOUNTED_P(array_ptr)) Z_ADDREF_P(array_ptr); } } else { array_ptr = _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1 TSRMLS_CC); @@ -7993,22 +7995,24 @@ static int ZEND_FASTCALL ZEND_FE_RESET_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARG Z_ADDREF_P(array_ptr); } } - } else if (IS_TMP_VAR == IS_CONST || - (IS_TMP_VAR == IS_CV && - !Z_ISREF_P(array_ptr) && - Z_REFCOUNT_P(array_ptr) > 1) || - (IS_TMP_VAR == IS_VAR && - !Z_ISREF_P(array_ptr) && - Z_REFCOUNT_P(array_ptr) > 2)) { - zval tmp; + } else if (Z_REFCOUNTED_P(array_ptr)) { + if (IS_TMP_VAR == IS_CONST || + (IS_TMP_VAR == IS_CV && + !Z_ISREF_P(array_ptr) && + Z_REFCOUNT_P(array_ptr) > 1) || + (IS_TMP_VAR == IS_VAR && + !Z_ISREF_P(array_ptr) && + Z_REFCOUNT_P(array_ptr) > 2)) { + zval tmp; - if (IS_TMP_VAR == IS_VAR) { - Z_DELREF_P(array_ptr); + if (IS_TMP_VAR == IS_VAR) { + Z_DELREF_P(array_ptr); + } + ZVAL_DUP(&tmp, array_ptr); + array_ptr = &tmp; + } else if (IS_TMP_VAR == IS_CV) { + Z_ADDREF_P(array_ptr); } - ZVAL_DUP(&tmp, array_ptr); - array_ptr = &tmp; - } else if (IS_TMP_VAR == IS_CV) { - Z_ADDREF_P(array_ptr); } } @@ -13000,7 +13004,7 @@ static int ZEND_FASTCALL ZEND_FE_RESET_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARG ZVAL_NEW_REF(array_ptr, array_ptr); } } - Z_ADDREF_P(array_ptr); + if (Z_REFCOUNTED_P(array_ptr)) Z_ADDREF_P(array_ptr); } } else { array_ptr = _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC); @@ -13022,22 +13026,24 @@ static int ZEND_FASTCALL ZEND_FE_RESET_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARG Z_ADDREF_P(array_ptr); } } - } else if (IS_VAR == IS_CONST || - (IS_VAR == IS_CV && - !Z_ISREF_P(array_ptr) && - Z_REFCOUNT_P(array_ptr) > 1) || - (IS_VAR == IS_VAR && - !Z_ISREF_P(array_ptr) && - Z_REFCOUNT_P(array_ptr) > 2)) { - zval tmp; + } else if (Z_REFCOUNTED_P(array_ptr)) { + if (IS_VAR == IS_CONST || + (IS_VAR == IS_CV && + !Z_ISREF_P(array_ptr) && + Z_REFCOUNT_P(array_ptr) > 1) || + (IS_VAR == IS_VAR && + !Z_ISREF_P(array_ptr) && + Z_REFCOUNT_P(array_ptr) > 2)) { + zval tmp; - if (IS_VAR == IS_VAR) { - Z_DELREF_P(array_ptr); + if (IS_VAR == IS_VAR) { + Z_DELREF_P(array_ptr); + } + ZVAL_DUP(&tmp, array_ptr); + array_ptr = &tmp; + } else if (IS_VAR == IS_CV) { + Z_ADDREF_P(array_ptr); } - ZVAL_DUP(&tmp, array_ptr); - array_ptr = &tmp; - } else if (IS_VAR == IS_CV) { - Z_ADDREF_P(array_ptr); } } @@ -14495,9 +14501,9 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_W_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HA if (opline->extended_value & ZEND_FETCH_MAKE_REF) { zval *retval_ptr = EX_VAR(opline->result.var); - Z_DELREF_P(retval_ptr); +//??? Z_DELREF_P(retval_ptr); SEPARATE_ZVAL_TO_MAKE_IS_REF(retval_ptr); - Z_ADDREF_P(retval_ptr); +//??? Z_ADDREF_P(retval_ptr); //??? EX_T(opline->result.var).var.ptr = *EX_T(opline->result.var).var.ptr_ptr; //??? EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; } @@ -16715,9 +16721,9 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_W_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HAND if (opline->extended_value & ZEND_FETCH_MAKE_REF) { zval *retval_ptr = EX_VAR(opline->result.var); - Z_DELREF_P(retval_ptr); +//??? Z_DELREF_P(retval_ptr); SEPARATE_ZVAL_TO_MAKE_IS_REF(retval_ptr); - Z_ADDREF_P(retval_ptr); +//??? Z_ADDREF_P(retval_ptr); //??? EX_T(opline->result.var).var.ptr = *EX_T(opline->result.var).var.ptr_ptr; //??? EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; } @@ -18843,9 +18849,9 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_W_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HAND if (opline->extended_value & ZEND_FETCH_MAKE_REF) { zval *retval_ptr = EX_VAR(opline->result.var); - Z_DELREF_P(retval_ptr); +//??? Z_DELREF_P(retval_ptr); SEPARATE_ZVAL_TO_MAKE_IS_REF(retval_ptr); - Z_ADDREF_P(retval_ptr); +//??? Z_ADDREF_P(retval_ptr); //??? EX_T(opline->result.var).var.ptr = *EX_T(opline->result.var).var.ptr_ptr; //??? EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; } @@ -22106,9 +22112,9 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_W_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDL if (opline->extended_value & ZEND_FETCH_MAKE_REF) { zval *retval_ptr = EX_VAR(opline->result.var); - Z_DELREF_P(retval_ptr); +//??? Z_DELREF_P(retval_ptr); SEPARATE_ZVAL_TO_MAKE_IS_REF(retval_ptr); - Z_ADDREF_P(retval_ptr); +//??? Z_ADDREF_P(retval_ptr); //??? EX_T(opline->result.var).var.ptr = *EX_T(opline->result.var).var.ptr_ptr; //??? EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; } @@ -23773,9 +23779,9 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_W_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE if (opline->extended_value & ZEND_FETCH_MAKE_REF) { zval *retval_ptr = EX_VAR(opline->result.var); - Z_DELREF_P(retval_ptr); +//??? Z_DELREF_P(retval_ptr); SEPARATE_ZVAL_TO_MAKE_IS_REF(retval_ptr); - Z_ADDREF_P(retval_ptr); +//??? Z_ADDREF_P(retval_ptr); //??? EX_T(opline->result.var).var.ptr = *EX_T(opline->result.var).var.ptr_ptr; //??? EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; } @@ -25110,9 +25116,9 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_W_SPEC_UNUSED_TMP_HANDLER(ZEND_OPCODE_H if (opline->extended_value & ZEND_FETCH_MAKE_REF) { zval *retval_ptr = EX_VAR(opline->result.var); - Z_DELREF_P(retval_ptr); +//??? Z_DELREF_P(retval_ptr); SEPARATE_ZVAL_TO_MAKE_IS_REF(retval_ptr); - Z_ADDREF_P(retval_ptr); +//??? Z_ADDREF_P(retval_ptr); //??? EX_T(opline->result.var).var.ptr = *EX_T(opline->result.var).var.ptr_ptr; //??? EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; } @@ -26363,9 +26369,9 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_W_SPEC_UNUSED_VAR_HANDLER(ZEND_OPCODE_H if (opline->extended_value & ZEND_FETCH_MAKE_REF) { zval *retval_ptr = EX_VAR(opline->result.var); - Z_DELREF_P(retval_ptr); +//??? Z_DELREF_P(retval_ptr); SEPARATE_ZVAL_TO_MAKE_IS_REF(retval_ptr); - Z_ADDREF_P(retval_ptr); +//??? Z_ADDREF_P(retval_ptr); //??? EX_T(opline->result.var).var.ptr = *EX_T(opline->result.var).var.ptr_ptr; //??? EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; } @@ -28015,9 +28021,9 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_W_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HA if (opline->extended_value & ZEND_FETCH_MAKE_REF) { zval *retval_ptr = EX_VAR(opline->result.var); - Z_DELREF_P(retval_ptr); +//??? Z_DELREF_P(retval_ptr); SEPARATE_ZVAL_TO_MAKE_IS_REF(retval_ptr); - Z_ADDREF_P(retval_ptr); +//??? Z_ADDREF_P(retval_ptr); //??? EX_T(opline->result.var).var.ptr = *EX_T(opline->result.var).var.ptr_ptr; //??? EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; } @@ -29654,7 +29660,7 @@ static int ZEND_FASTCALL ZEND_FE_RESET_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS ZVAL_NEW_REF(array_ptr, array_ptr); } } - Z_ADDREF_P(array_ptr); + if (Z_REFCOUNTED_P(array_ptr)) Z_ADDREF_P(array_ptr); } } else { array_ptr = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC); @@ -29676,22 +29682,24 @@ static int ZEND_FASTCALL ZEND_FE_RESET_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS Z_ADDREF_P(array_ptr); } } - } else if (IS_CV == IS_CONST || - (IS_CV == IS_CV && - !Z_ISREF_P(array_ptr) && - Z_REFCOUNT_P(array_ptr) > 1) || - (IS_CV == IS_VAR && - !Z_ISREF_P(array_ptr) && - Z_REFCOUNT_P(array_ptr) > 2)) { - zval tmp; + } else if (Z_REFCOUNTED_P(array_ptr)) { + if (IS_CV == IS_CONST || + (IS_CV == IS_CV && + !Z_ISREF_P(array_ptr) && + Z_REFCOUNT_P(array_ptr) > 1) || + (IS_CV == IS_VAR && + !Z_ISREF_P(array_ptr) && + Z_REFCOUNT_P(array_ptr) > 2)) { + zval tmp; - if (IS_CV == IS_VAR) { - Z_DELREF_P(array_ptr); + if (IS_CV == IS_VAR) { + Z_DELREF_P(array_ptr); + } + ZVAL_DUP(&tmp, array_ptr); + array_ptr = &tmp; + } else if (IS_CV == IS_CV) { + Z_ADDREF_P(array_ptr); } - ZVAL_DUP(&tmp, array_ptr); - array_ptr = &tmp; - } else if (IS_CV == IS_CV) { - Z_ADDREF_P(array_ptr); } } @@ -31014,9 +31022,9 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_W_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HAN if (opline->extended_value & ZEND_FETCH_MAKE_REF) { zval *retval_ptr = EX_VAR(opline->result.var); - Z_DELREF_P(retval_ptr); +//??? Z_DELREF_P(retval_ptr); SEPARATE_ZVAL_TO_MAKE_IS_REF(retval_ptr); - Z_ADDREF_P(retval_ptr); +//??? Z_ADDREF_P(retval_ptr); //??? EX_T(opline->result.var).var.ptr = *EX_T(opline->result.var).var.ptr_ptr; //??? EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; } @@ -33015,9 +33023,9 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_W_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDL if (opline->extended_value & ZEND_FETCH_MAKE_REF) { zval *retval_ptr = EX_VAR(opline->result.var); - Z_DELREF_P(retval_ptr); +//??? Z_DELREF_P(retval_ptr); SEPARATE_ZVAL_TO_MAKE_IS_REF(retval_ptr); - Z_ADDREF_P(retval_ptr); +//??? Z_ADDREF_P(retval_ptr); //??? EX_T(opline->result.var).var.ptr = *EX_T(opline->result.var).var.ptr_ptr; //??? EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; } @@ -35017,9 +35025,9 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_W_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDL if (opline->extended_value & ZEND_FETCH_MAKE_REF) { zval *retval_ptr = EX_VAR(opline->result.var); - Z_DELREF_P(retval_ptr); +//??? Z_DELREF_P(retval_ptr); SEPARATE_ZVAL_TO_MAKE_IS_REF(retval_ptr); - Z_ADDREF_P(retval_ptr); +//??? Z_ADDREF_P(retval_ptr); //??? EX_T(opline->result.var).var.ptr = *EX_T(opline->result.var).var.ptr_ptr; //??? EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; } @@ -38022,9 +38030,9 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_W_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLE if (opline->extended_value & ZEND_FETCH_MAKE_REF) { zval *retval_ptr = EX_VAR(opline->result.var); - Z_DELREF_P(retval_ptr); +//??? Z_DELREF_P(retval_ptr); SEPARATE_ZVAL_TO_MAKE_IS_REF(retval_ptr); - Z_ADDREF_P(retval_ptr); +//??? Z_ADDREF_P(retval_ptr); //??? EX_T(opline->result.var).var.ptr = *EX_T(opline->result.var).var.ptr_ptr; //??? EX_T(opline->result.var).var.ptr_ptr = &EX_T(opline->result.var).var.ptr; } diff --git a/ext/spl/php_spl.c b/ext/spl/php_spl.c index 238b7574a0..90d4e2f054 100644 --- a/ext/spl/php_spl.c +++ b/ext/spl/php_spl.c @@ -414,7 +414,7 @@ PHP_FUNCTION(spl_autoload_call) HashPosition function_pos; autoload_func_info *alfi; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "Z", &class_name) == FAILURE || Z_TYPE_P(class_name) != IS_STRING) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &class_name) == FAILURE || Z_TYPE_P(class_name) != IS_STRING) { return; } @@ -617,7 +617,7 @@ PHP_FUNCTION(spl_autoload_register) HT_MOVE_TAIL_TO_HEAD(SPL_G(autoload_functions)); } skip: - STR_FREE(lc_name); + STR_RELEASE(lc_name); } if (SPL_G(autoload_functions)) { diff --git a/ext/standard/type.c b/ext/standard/type.c index 4488d4f1ae..facb1bad02 100644 --- a/ext/standard/type.c +++ b/ext/standard/type.c @@ -133,20 +133,20 @@ PHP_FUNCTION(settype) Get the integer value of a variable using the optional base for the conversion */ PHP_FUNCTION(intval) { - zval **num; + zval *num; long arg_base; int base; switch (ZEND_NUM_ARGS()) { case 1: - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "Z", &num) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &num) == FAILURE) { return; } base = 10; break; case 2: - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "Zl", &num, &arg_base) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "zl", &num, &arg_base) == FAILURE) { return; } base = arg_base; @@ -156,7 +156,7 @@ PHP_FUNCTION(intval) WRONG_PARAM_COUNT; } - RETVAL_ZVAL(*num, 1, 0); + RETVAL_ZVAL(num, 1, 0); convert_to_long_base(return_value, base); } /* }}} */ @@ -165,13 +165,13 @@ PHP_FUNCTION(intval) Get the float value of a variable */ PHP_FUNCTION(floatval) { - zval **num; + zval *num; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "Z", &num) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &num) == FAILURE) { return; } - RETVAL_ZVAL(*num, 1, 0); + RETVAL_ZVAL(num, 1, 0); convert_to_double(return_value); } /* }}} */ @@ -180,13 +180,13 @@ PHP_FUNCTION(floatval) Get the boolean value of a variable */ PHP_FUNCTION(boolval) { - zval **val; + zval *val; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "Z", &val) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &val) == FAILURE) { return; } - RETURN_BOOL(zend_is_true(*val TSRMLS_CC)); + RETURN_BOOL(zend_is_true(val TSRMLS_CC)); } /* }}} */ @@ -194,20 +194,20 @@ PHP_FUNCTION(boolval) Get the string value of a variable */ PHP_FUNCTION(strval) { - zval **num, *tmp; + zval *num, *tmp; zval expr_copy; int use_copy; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "Z", &num) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &num) == FAILURE) { return; } - zend_make_printable_zval(*num, &expr_copy, &use_copy); + zend_make_printable_zval(num, &expr_copy, &use_copy); if (use_copy) { tmp = &expr_copy; RETVAL_ZVAL(tmp, 0, 0); } else { - RETVAL_ZVAL(*num, 1, 0); + RETVAL_ZVAL(num, 1, 0); } } /* }}} */ diff --git a/ext/standard/var.c b/ext/standard/var.c index 1e2b85c055..2ce76cced1 100644 --- a/ext/standard/var.c +++ b/ext/standard/var.c @@ -251,21 +251,21 @@ PHPAPI void php_debug_zval_dump(zval *struc, int level TSRMLS_DC) /* {{{ */ switch (Z_TYPE_P(struc)) { case IS_BOOL: - php_printf("%sbool(%s) refcount(%u)\n", COMMON, Z_LVAL_P(struc)?"true":"false", Z_REFCOUNT_P(struc)); + php_printf("%sbool(%s)\n", COMMON, Z_LVAL_P(struc)?"true":"false"); break; case IS_NULL: - php_printf("%sNULL refcount(%u)\n", COMMON, Z_REFCOUNT_P(struc)); + php_printf("%sNULL\n", COMMON); break; case IS_LONG: - php_printf("%slong(%ld) refcount(%u)\n", COMMON, Z_LVAL_P(struc), Z_REFCOUNT_P(struc)); + php_printf("%slong(%ld)\n", COMMON, Z_LVAL_P(struc)); break; case IS_DOUBLE: - php_printf("%sdouble(%.*G) refcount(%u)\n", COMMON, (int) EG(precision), Z_DVAL_P(struc), Z_REFCOUNT_P(struc)); + php_printf("%sdouble(%.*G)\n", COMMON, (int) EG(precision), Z_DVAL_P(struc)); break; case IS_STRING: php_printf("%sstring(%d) \"", COMMON, Z_STRLEN_P(struc)); PHPWRITE(Z_STRVAL_P(struc), Z_STRLEN_P(struc)); - php_printf("\" refcount(%u)\n", Z_REFCOUNT_P(struc)); + php_printf("\" refcount(%u)\n", IS_INTERNED(Z_STR_P(struc)) ? 1 : Z_REFCOUNT_P(struc)); break; case IS_ARRAY: myht = Z_ARRVAL_P(struc);