summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@zend.com>2014-02-21 20:35:40 +0400
committerDmitry Stogov <dmitry@zend.com>2014-02-21 20:35:40 +0400
commit52bd62eca819e43e0fc6788c0ec4670ca4c8cddf (patch)
tree661dd454a4b530440188376ee999750adc51fd10
parent2520f0801d05dad6691b72284c08a38408dfccf7 (diff)
downloadphp-git-52bd62eca819e43e0fc6788c0ec4670ca4c8cddf.tar.gz
Fixed assertions
-rw-r--r--Zend/zend_compile.c2
-rw-r--r--Zend/zend_execute.c2
-rw-r--r--Zend/zend_execute_API.c4
-rw-r--r--Zend/zend_object_handlers.c4
-rw-r--r--Zend/zend_operators.c12
-rw-r--r--Zend/zend_vm_def.h38
-rw-r--r--Zend/zend_vm_execute.h176
-rw-r--r--ext/spl/php_spl.c4
-rw-r--r--ext/standard/type.c28
-rw-r--r--ext/standard/var.c10
10 files changed, 147 insertions, 133 deletions
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);