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;
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);
}
}
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);
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);
}
}
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);
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);
}
}
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;
}
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;
}
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;
}
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;
}
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;
}
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;
}
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;
}
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;
}
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);
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);
}
}
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;
}
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;
}
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;
}
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;
}
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;
WRONG_PARAM_COUNT;
}
- RETVAL_ZVAL(*num, 1, 0);
+ RETVAL_ZVAL(num, 1, 0);
convert_to_long_base(return_value, base);
}
/* }}} */
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);
}
/* }}} */
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));
}
/* }}} */
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);
}
}
/* }}} */