} else {
target_symbol_table = zend_get_target_symbol_table(opline->extended_value & ZEND_FETCH_TYPE_MASK TSRMLS_CC);
//???: STRING may become INDIRECT
- if (Z_TYPE_P(varname) == IS_INDIRECT) {
+ if (IS_CONST == IS_CV && Z_TYPE_P(varname) == IS_INDIRECT) {
varname = Z_INDIRECT_P(varname);
}
/*
} else {
target_symbol_table = zend_get_target_symbol_table(opline->extended_value & ZEND_FETCH_TYPE_MASK TSRMLS_CC);
//???: STRING may become INDIRECT
- if (Z_TYPE_P(varname) == IS_INDIRECT) {
+ if (IS_CONST == IS_CV && Z_TYPE_P(varname) == IS_INDIRECT) {
varname = Z_INDIRECT_P(varname);
}
zend_delete_variable(execute_data, target_symbol_table, Z_STR_P(varname) TSRMLS_CC);
} else {
target_symbol_table = zend_get_target_symbol_table(opline->extended_value & ZEND_FETCH_TYPE_MASK TSRMLS_CC);
//???: STRING may become INDIRECT
- if (Z_TYPE_P(varname) == IS_INDIRECT) {
+ if (IS_CONST == IS_CV && Z_TYPE_P(varname) == IS_INDIRECT) {
varname = Z_INDIRECT_P(varname);
}
if ((value = zend_hash_find(target_symbol_table, Z_STR_P(varname))) == NULL) {
} else {
target_symbol_table = zend_get_target_symbol_table(opline->extended_value & ZEND_FETCH_TYPE_MASK TSRMLS_CC);
//???: STRING may become INDIRECT
- if (Z_TYPE_P(varname) == IS_INDIRECT) {
+ if (IS_CONST == IS_CV && Z_TYPE_P(varname) == IS_INDIRECT) {
varname = Z_INDIRECT_P(varname);
}
/*
} else {
target_symbol_table = zend_get_target_symbol_table(opline->extended_value & ZEND_FETCH_TYPE_MASK TSRMLS_CC);
//???: STRING may become INDIRECT
- if (Z_TYPE_P(varname) == IS_INDIRECT) {
+ if (IS_CONST == IS_CV && Z_TYPE_P(varname) == IS_INDIRECT) {
varname = Z_INDIRECT_P(varname);
}
zend_delete_variable(execute_data, target_symbol_table, Z_STR_P(varname) TSRMLS_CC);
} else {
target_symbol_table = zend_get_target_symbol_table(opline->extended_value & ZEND_FETCH_TYPE_MASK TSRMLS_CC);
//???: STRING may become INDIRECT
- if (Z_TYPE_P(varname) == IS_INDIRECT) {
+ if (IS_CONST == IS_CV && Z_TYPE_P(varname) == IS_INDIRECT) {
varname = Z_INDIRECT_P(varname);
}
if ((value = zend_hash_find(target_symbol_table, Z_STR_P(varname))) == NULL) {
} else {
target_symbol_table = zend_get_target_symbol_table(opline->extended_value & ZEND_FETCH_TYPE_MASK TSRMLS_CC);
//???: STRING may become INDIRECT
- if (Z_TYPE_P(varname) == IS_INDIRECT) {
+ if (IS_CONST == IS_CV && Z_TYPE_P(varname) == IS_INDIRECT) {
varname = Z_INDIRECT_P(varname);
}
/*
} else {
target_symbol_table = zend_get_target_symbol_table(opline->extended_value & ZEND_FETCH_TYPE_MASK TSRMLS_CC);
//???: STRING may become INDIRECT
- if (Z_TYPE_P(varname) == IS_INDIRECT) {
+ if (IS_CONST == IS_CV && Z_TYPE_P(varname) == IS_INDIRECT) {
varname = Z_INDIRECT_P(varname);
}
zend_delete_variable(execute_data, target_symbol_table, Z_STR_P(varname) TSRMLS_CC);
} else {
target_symbol_table = zend_get_target_symbol_table(opline->extended_value & ZEND_FETCH_TYPE_MASK TSRMLS_CC);
//???: STRING may become INDIRECT
- if (Z_TYPE_P(varname) == IS_INDIRECT) {
+ if (IS_CONST == IS_CV && Z_TYPE_P(varname) == IS_INDIRECT) {
varname = Z_INDIRECT_P(varname);
}
if ((value = zend_hash_find(target_symbol_table, Z_STR_P(varname))) == NULL) {
} else {
target_symbol_table = zend_get_target_symbol_table(opline->extended_value & ZEND_FETCH_TYPE_MASK TSRMLS_CC);
//???: STRING may become INDIRECT
- if (Z_TYPE_P(varname) == IS_INDIRECT) {
+ if (IS_TMP_VAR == IS_CV && Z_TYPE_P(varname) == IS_INDIRECT) {
varname = Z_INDIRECT_P(varname);
}
/*
} else {
target_symbol_table = zend_get_target_symbol_table(opline->extended_value & ZEND_FETCH_TYPE_MASK TSRMLS_CC);
//???: STRING may become INDIRECT
- if (Z_TYPE_P(varname) == IS_INDIRECT) {
+ if (IS_TMP_VAR == IS_CV && Z_TYPE_P(varname) == IS_INDIRECT) {
varname = Z_INDIRECT_P(varname);
}
zend_delete_variable(execute_data, target_symbol_table, Z_STR_P(varname) TSRMLS_CC);
} else {
target_symbol_table = zend_get_target_symbol_table(opline->extended_value & ZEND_FETCH_TYPE_MASK TSRMLS_CC);
//???: STRING may become INDIRECT
- if (Z_TYPE_P(varname) == IS_INDIRECT) {
+ if (IS_TMP_VAR == IS_CV && Z_TYPE_P(varname) == IS_INDIRECT) {
varname = Z_INDIRECT_P(varname);
}
if ((value = zend_hash_find(target_symbol_table, Z_STR_P(varname))) == NULL) {
} else {
target_symbol_table = zend_get_target_symbol_table(opline->extended_value & ZEND_FETCH_TYPE_MASK TSRMLS_CC);
//???: STRING may become INDIRECT
- if (Z_TYPE_P(varname) == IS_INDIRECT) {
+ if (IS_TMP_VAR == IS_CV && Z_TYPE_P(varname) == IS_INDIRECT) {
varname = Z_INDIRECT_P(varname);
}
/*
} else {
target_symbol_table = zend_get_target_symbol_table(opline->extended_value & ZEND_FETCH_TYPE_MASK TSRMLS_CC);
//???: STRING may become INDIRECT
- if (Z_TYPE_P(varname) == IS_INDIRECT) {
+ if (IS_TMP_VAR == IS_CV && Z_TYPE_P(varname) == IS_INDIRECT) {
varname = Z_INDIRECT_P(varname);
}
zend_delete_variable(execute_data, target_symbol_table, Z_STR_P(varname) TSRMLS_CC);
} else {
target_symbol_table = zend_get_target_symbol_table(opline->extended_value & ZEND_FETCH_TYPE_MASK TSRMLS_CC);
//???: STRING may become INDIRECT
- if (Z_TYPE_P(varname) == IS_INDIRECT) {
+ if (IS_TMP_VAR == IS_CV && Z_TYPE_P(varname) == IS_INDIRECT) {
varname = Z_INDIRECT_P(varname);
}
if ((value = zend_hash_find(target_symbol_table, Z_STR_P(varname))) == NULL) {
} else {
target_symbol_table = zend_get_target_symbol_table(opline->extended_value & ZEND_FETCH_TYPE_MASK TSRMLS_CC);
//???: STRING may become INDIRECT
- if (Z_TYPE_P(varname) == IS_INDIRECT) {
+ if (IS_TMP_VAR == IS_CV && Z_TYPE_P(varname) == IS_INDIRECT) {
varname = Z_INDIRECT_P(varname);
}
/*
} else {
target_symbol_table = zend_get_target_symbol_table(opline->extended_value & ZEND_FETCH_TYPE_MASK TSRMLS_CC);
//???: STRING may become INDIRECT
- if (Z_TYPE_P(varname) == IS_INDIRECT) {
+ if (IS_TMP_VAR == IS_CV && Z_TYPE_P(varname) == IS_INDIRECT) {
varname = Z_INDIRECT_P(varname);
}
zend_delete_variable(execute_data, target_symbol_table, Z_STR_P(varname) TSRMLS_CC);
} else {
target_symbol_table = zend_get_target_symbol_table(opline->extended_value & ZEND_FETCH_TYPE_MASK TSRMLS_CC);
//???: STRING may become INDIRECT
- if (Z_TYPE_P(varname) == IS_INDIRECT) {
+ if (IS_TMP_VAR == IS_CV && Z_TYPE_P(varname) == IS_INDIRECT) {
varname = Z_INDIRECT_P(varname);
}
if ((value = zend_hash_find(target_symbol_table, Z_STR_P(varname))) == NULL) {
zend_free_op free_op1, free_op_data1;
zval *object = _get_zval_ptr_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
zval *property = opline->op2.zv;
- zval *value = get_zval_ptr((opline+1)->op1_type, &(opline+1)->op1, execute_data, &free_op_data1, BP_VAR_R);
+ zval *value;
int have_get_ptr = 0;
if (IS_VAR == IS_VAR && UNEXPECTED(Z_TYPE_P(object) == IS_STR_OFFSET)) {
make_real_object(object TSRMLS_CC);
+//???: object may become INDIRECT
+ if (IS_VAR == IS_CV && Z_TYPE_P(object) == IS_INDIRECT) {
+ object = Z_INDIRECT_P(object);
+ }
+
+ value = get_zval_ptr((opline+1)->op1_type, &(opline+1)->op1, execute_data, &free_op_data1, BP_VAR_R);
+
if (UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
zend_error(E_WARNING, "Attempt to assign property of non-object");
} else {
target_symbol_table = zend_get_target_symbol_table(opline->extended_value & ZEND_FETCH_TYPE_MASK TSRMLS_CC);
//???: STRING may become INDIRECT
- if (Z_TYPE_P(varname) == IS_INDIRECT) {
+ if (IS_VAR == IS_CV && Z_TYPE_P(varname) == IS_INDIRECT) {
varname = Z_INDIRECT_P(varname);
}
/*
} else {
target_symbol_table = zend_get_target_symbol_table(opline->extended_value & ZEND_FETCH_TYPE_MASK TSRMLS_CC);
//???: STRING may become INDIRECT
- if (Z_TYPE_P(varname) == IS_INDIRECT) {
+ if (IS_VAR == IS_CV && Z_TYPE_P(varname) == IS_INDIRECT) {
varname = Z_INDIRECT_P(varname);
}
zend_delete_variable(execute_data, target_symbol_table, Z_STR_P(varname) TSRMLS_CC);
} else {
target_symbol_table = zend_get_target_symbol_table(opline->extended_value & ZEND_FETCH_TYPE_MASK TSRMLS_CC);
//???: STRING may become INDIRECT
- if (Z_TYPE_P(varname) == IS_INDIRECT) {
+ if (IS_VAR == IS_CV && Z_TYPE_P(varname) == IS_INDIRECT) {
varname = Z_INDIRECT_P(varname);
}
if ((value = zend_hash_find(target_symbol_table, Z_STR_P(varname))) == NULL) {
zend_free_op free_op1, free_op2, free_op_data1;
zval *object = _get_zval_ptr_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
zval *property = _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2 TSRMLS_CC);
- zval *value = get_zval_ptr((opline+1)->op1_type, &(opline+1)->op1, execute_data, &free_op_data1, BP_VAR_R);
+ zval *value;
int have_get_ptr = 0;
if (IS_VAR == IS_VAR && UNEXPECTED(Z_TYPE_P(object) == IS_STR_OFFSET)) {
make_real_object(object TSRMLS_CC);
+//???: object may become INDIRECT
+ if (IS_VAR == IS_CV && Z_TYPE_P(object) == IS_INDIRECT) {
+ object = Z_INDIRECT_P(object);
+ }
+
+ value = get_zval_ptr((opline+1)->op1_type, &(opline+1)->op1, execute_data, &free_op_data1, BP_VAR_R);
+
if (UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
zend_error(E_WARNING, "Attempt to assign property of non-object");
zval_dtor(free_op2.var);
zend_free_op free_op1, free_op2, free_op_data1;
zval *object = _get_zval_ptr_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
zval *property = _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2 TSRMLS_CC);
- zval *value = get_zval_ptr((opline+1)->op1_type, &(opline+1)->op1, execute_data, &free_op_data1, BP_VAR_R);
+ zval *value;
int have_get_ptr = 0;
if (IS_VAR == IS_VAR && UNEXPECTED(Z_TYPE_P(object) == IS_STR_OFFSET)) {
make_real_object(object TSRMLS_CC);
+//???: object may become INDIRECT
+ if (IS_VAR == IS_CV && Z_TYPE_P(object) == IS_INDIRECT) {
+ object = Z_INDIRECT_P(object);
+ }
+
+ value = get_zval_ptr((opline+1)->op1_type, &(opline+1)->op1, execute_data, &free_op_data1, BP_VAR_R);
+
if (UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
zend_error(E_WARNING, "Attempt to assign property of non-object");
zval_ptr_dtor_nogc(free_op2.var);
} else {
target_symbol_table = zend_get_target_symbol_table(opline->extended_value & ZEND_FETCH_TYPE_MASK TSRMLS_CC);
//???: STRING may become INDIRECT
- if (Z_TYPE_P(varname) == IS_INDIRECT) {
+ if (IS_VAR == IS_CV && Z_TYPE_P(varname) == IS_INDIRECT) {
varname = Z_INDIRECT_P(varname);
}
/*
} else {
target_symbol_table = zend_get_target_symbol_table(opline->extended_value & ZEND_FETCH_TYPE_MASK TSRMLS_CC);
//???: STRING may become INDIRECT
- if (Z_TYPE_P(varname) == IS_INDIRECT) {
+ if (IS_VAR == IS_CV && Z_TYPE_P(varname) == IS_INDIRECT) {
varname = Z_INDIRECT_P(varname);
}
zend_delete_variable(execute_data, target_symbol_table, Z_STR_P(varname) TSRMLS_CC);
} else {
target_symbol_table = zend_get_target_symbol_table(opline->extended_value & ZEND_FETCH_TYPE_MASK TSRMLS_CC);
//???: STRING may become INDIRECT
- if (Z_TYPE_P(varname) == IS_INDIRECT) {
+ if (IS_VAR == IS_CV && Z_TYPE_P(varname) == IS_INDIRECT) {
varname = Z_INDIRECT_P(varname);
}
if ((value = zend_hash_find(target_symbol_table, Z_STR_P(varname))) == NULL) {
zend_free_op free_op1, free_op_data1;
zval *object = _get_zval_ptr_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
zval *property = NULL;
- zval *value = get_zval_ptr((opline+1)->op1_type, &(opline+1)->op1, execute_data, &free_op_data1, BP_VAR_R);
+ zval *value;
int have_get_ptr = 0;
if (IS_VAR == IS_VAR && UNEXPECTED(Z_TYPE_P(object) == IS_STR_OFFSET)) {
make_real_object(object TSRMLS_CC);
+//???: object may become INDIRECT
+ if (IS_VAR == IS_CV && Z_TYPE_P(object) == IS_INDIRECT) {
+ object = Z_INDIRECT_P(object);
+ }
+
+ value = get_zval_ptr((opline+1)->op1_type, &(opline+1)->op1, execute_data, &free_op_data1, BP_VAR_R);
+
if (UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
zend_error(E_WARNING, "Attempt to assign property of non-object");
} else {
target_symbol_table = zend_get_target_symbol_table(opline->extended_value & ZEND_FETCH_TYPE_MASK TSRMLS_CC);
//???: STRING may become INDIRECT
- if (Z_TYPE_P(varname) == IS_INDIRECT) {
+ if (IS_VAR == IS_CV && Z_TYPE_P(varname) == IS_INDIRECT) {
varname = Z_INDIRECT_P(varname);
}
/*
} else {
target_symbol_table = zend_get_target_symbol_table(opline->extended_value & ZEND_FETCH_TYPE_MASK TSRMLS_CC);
//???: STRING may become INDIRECT
- if (Z_TYPE_P(varname) == IS_INDIRECT) {
+ if (IS_VAR == IS_CV && Z_TYPE_P(varname) == IS_INDIRECT) {
varname = Z_INDIRECT_P(varname);
}
zend_delete_variable(execute_data, target_symbol_table, Z_STR_P(varname) TSRMLS_CC);
} else {
target_symbol_table = zend_get_target_symbol_table(opline->extended_value & ZEND_FETCH_TYPE_MASK TSRMLS_CC);
//???: STRING may become INDIRECT
- if (Z_TYPE_P(varname) == IS_INDIRECT) {
+ if (IS_VAR == IS_CV && Z_TYPE_P(varname) == IS_INDIRECT) {
varname = Z_INDIRECT_P(varname);
}
if ((value = zend_hash_find(target_symbol_table, Z_STR_P(varname))) == NULL) {
zend_free_op free_op1, free_op_data1;
zval *object = _get_zval_ptr_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
zval *property = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC);
- zval *value = get_zval_ptr((opline+1)->op1_type, &(opline+1)->op1, execute_data, &free_op_data1, BP_VAR_R);
+ zval *value;
int have_get_ptr = 0;
if (IS_VAR == IS_VAR && UNEXPECTED(Z_TYPE_P(object) == IS_STR_OFFSET)) {
make_real_object(object TSRMLS_CC);
+//???: object may become INDIRECT
+ if (IS_VAR == IS_CV && Z_TYPE_P(object) == IS_INDIRECT) {
+ object = Z_INDIRECT_P(object);
+ }
+
+ value = get_zval_ptr((opline+1)->op1_type, &(opline+1)->op1, execute_data, &free_op_data1, BP_VAR_R);
+
if (UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
zend_error(E_WARNING, "Attempt to assign property of non-object");
zend_free_op free_op_data1;
zval *object = _get_obj_zval_ptr_unused(TSRMLS_C);
zval *property = opline->op2.zv;
- zval *value = get_zval_ptr((opline+1)->op1_type, &(opline+1)->op1, execute_data, &free_op_data1, BP_VAR_R);
+ zval *value;
int have_get_ptr = 0;
if (IS_UNUSED == IS_VAR && UNEXPECTED(Z_TYPE_P(object) == IS_STR_OFFSET)) {
make_real_object(object TSRMLS_CC);
+//???: object may become INDIRECT
+ if (IS_UNUSED == IS_CV && Z_TYPE_P(object) == IS_INDIRECT) {
+ object = Z_INDIRECT_P(object);
+ }
+
+ value = get_zval_ptr((opline+1)->op1_type, &(opline+1)->op1, execute_data, &free_op_data1, BP_VAR_R);
+
if (UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
zend_error(E_WARNING, "Attempt to assign property of non-object");
zend_free_op free_op2, free_op_data1;
zval *object = _get_obj_zval_ptr_unused(TSRMLS_C);
zval *property = _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2 TSRMLS_CC);
- zval *value = get_zval_ptr((opline+1)->op1_type, &(opline+1)->op1, execute_data, &free_op_data1, BP_VAR_R);
+ zval *value;
int have_get_ptr = 0;
if (IS_UNUSED == IS_VAR && UNEXPECTED(Z_TYPE_P(object) == IS_STR_OFFSET)) {
make_real_object(object TSRMLS_CC);
+//???: object may become INDIRECT
+ if (IS_UNUSED == IS_CV && Z_TYPE_P(object) == IS_INDIRECT) {
+ object = Z_INDIRECT_P(object);
+ }
+
+ value = get_zval_ptr((opline+1)->op1_type, &(opline+1)->op1, execute_data, &free_op_data1, BP_VAR_R);
+
if (UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
zend_error(E_WARNING, "Attempt to assign property of non-object");
zval_dtor(free_op2.var);
zend_free_op free_op2, free_op_data1;
zval *object = _get_obj_zval_ptr_unused(TSRMLS_C);
zval *property = _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2 TSRMLS_CC);
- zval *value = get_zval_ptr((opline+1)->op1_type, &(opline+1)->op1, execute_data, &free_op_data1, BP_VAR_R);
+ zval *value;
int have_get_ptr = 0;
if (IS_UNUSED == IS_VAR && UNEXPECTED(Z_TYPE_P(object) == IS_STR_OFFSET)) {
make_real_object(object TSRMLS_CC);
+//???: object may become INDIRECT
+ if (IS_UNUSED == IS_CV && Z_TYPE_P(object) == IS_INDIRECT) {
+ object = Z_INDIRECT_P(object);
+ }
+
+ value = get_zval_ptr((opline+1)->op1_type, &(opline+1)->op1, execute_data, &free_op_data1, BP_VAR_R);
+
if (UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
zend_error(E_WARNING, "Attempt to assign property of non-object");
zval_ptr_dtor_nogc(free_op2.var);
zend_free_op free_op_data1;
zval *object = _get_obj_zval_ptr_unused(TSRMLS_C);
zval *property = NULL;
- zval *value = get_zval_ptr((opline+1)->op1_type, &(opline+1)->op1, execute_data, &free_op_data1, BP_VAR_R);
+ zval *value;
int have_get_ptr = 0;
if (IS_UNUSED == IS_VAR && UNEXPECTED(Z_TYPE_P(object) == IS_STR_OFFSET)) {
make_real_object(object TSRMLS_CC);
+//???: object may become INDIRECT
+ if (IS_UNUSED == IS_CV && Z_TYPE_P(object) == IS_INDIRECT) {
+ object = Z_INDIRECT_P(object);
+ }
+
+ value = get_zval_ptr((opline+1)->op1_type, &(opline+1)->op1, execute_data, &free_op_data1, BP_VAR_R);
+
if (UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
zend_error(E_WARNING, "Attempt to assign property of non-object");
zend_free_op free_op_data1;
zval *object = _get_obj_zval_ptr_unused(TSRMLS_C);
zval *property = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC);
- zval *value = get_zval_ptr((opline+1)->op1_type, &(opline+1)->op1, execute_data, &free_op_data1, BP_VAR_R);
+ zval *value;
int have_get_ptr = 0;
if (IS_UNUSED == IS_VAR && UNEXPECTED(Z_TYPE_P(object) == IS_STR_OFFSET)) {
make_real_object(object TSRMLS_CC);
+//???: object may become INDIRECT
+ if (IS_UNUSED == IS_CV && Z_TYPE_P(object) == IS_INDIRECT) {
+ object = Z_INDIRECT_P(object);
+ }
+
+ value = get_zval_ptr((opline+1)->op1_type, &(opline+1)->op1, execute_data, &free_op_data1, BP_VAR_R);
+
if (UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
zend_error(E_WARNING, "Attempt to assign property of non-object");
zend_free_op free_op_data1;
zval *object = _get_zval_ptr_cv_BP_VAR_RW(execute_data, opline->op1.var TSRMLS_CC);
zval *property = opline->op2.zv;
- zval *value = get_zval_ptr((opline+1)->op1_type, &(opline+1)->op1, execute_data, &free_op_data1, BP_VAR_R);
+ zval *value;
int have_get_ptr = 0;
if (IS_CV == IS_VAR && UNEXPECTED(Z_TYPE_P(object) == IS_STR_OFFSET)) {
make_real_object(object TSRMLS_CC);
+//???: object may become INDIRECT
+ if (IS_CV == IS_CV && Z_TYPE_P(object) == IS_INDIRECT) {
+ object = Z_INDIRECT_P(object);
+ }
+
+ value = get_zval_ptr((opline+1)->op1_type, &(opline+1)->op1, execute_data, &free_op_data1, BP_VAR_R);
+
if (UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
zend_error(E_WARNING, "Attempt to assign property of non-object");
} else {
target_symbol_table = zend_get_target_symbol_table(opline->extended_value & ZEND_FETCH_TYPE_MASK TSRMLS_CC);
//???: STRING may become INDIRECT
- if (Z_TYPE_P(varname) == IS_INDIRECT) {
+ if (IS_CV == IS_CV && Z_TYPE_P(varname) == IS_INDIRECT) {
varname = Z_INDIRECT_P(varname);
}
/*
} else {
target_symbol_table = zend_get_target_symbol_table(opline->extended_value & ZEND_FETCH_TYPE_MASK TSRMLS_CC);
//???: STRING may become INDIRECT
- if (Z_TYPE_P(varname) == IS_INDIRECT) {
+ if (IS_CV == IS_CV && Z_TYPE_P(varname) == IS_INDIRECT) {
varname = Z_INDIRECT_P(varname);
}
zend_delete_variable(execute_data, target_symbol_table, Z_STR_P(varname) TSRMLS_CC);
} else {
target_symbol_table = zend_get_target_symbol_table(opline->extended_value & ZEND_FETCH_TYPE_MASK TSRMLS_CC);
//???: STRING may become INDIRECT
- if (Z_TYPE_P(varname) == IS_INDIRECT) {
+ if (IS_CV == IS_CV && Z_TYPE_P(varname) == IS_INDIRECT) {
varname = Z_INDIRECT_P(varname);
}
if ((value = zend_hash_find(target_symbol_table, Z_STR_P(varname))) == NULL) {
zend_free_op free_op2, free_op_data1;
zval *object = _get_zval_ptr_cv_BP_VAR_RW(execute_data, opline->op1.var TSRMLS_CC);
zval *property = _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2 TSRMLS_CC);
- zval *value = get_zval_ptr((opline+1)->op1_type, &(opline+1)->op1, execute_data, &free_op_data1, BP_VAR_R);
+ zval *value;
int have_get_ptr = 0;
if (IS_CV == IS_VAR && UNEXPECTED(Z_TYPE_P(object) == IS_STR_OFFSET)) {
make_real_object(object TSRMLS_CC);
+//???: object may become INDIRECT
+ if (IS_CV == IS_CV && Z_TYPE_P(object) == IS_INDIRECT) {
+ object = Z_INDIRECT_P(object);
+ }
+
+ value = get_zval_ptr((opline+1)->op1_type, &(opline+1)->op1, execute_data, &free_op_data1, BP_VAR_R);
+
if (UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
zend_error(E_WARNING, "Attempt to assign property of non-object");
zval_dtor(free_op2.var);
zend_free_op free_op2, free_op_data1;
zval *object = _get_zval_ptr_cv_BP_VAR_RW(execute_data, opline->op1.var TSRMLS_CC);
zval *property = _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2 TSRMLS_CC);
- zval *value = get_zval_ptr((opline+1)->op1_type, &(opline+1)->op1, execute_data, &free_op_data1, BP_VAR_R);
+ zval *value;
int have_get_ptr = 0;
if (IS_CV == IS_VAR && UNEXPECTED(Z_TYPE_P(object) == IS_STR_OFFSET)) {
make_real_object(object TSRMLS_CC);
+//???: object may become INDIRECT
+ if (IS_CV == IS_CV && Z_TYPE_P(object) == IS_INDIRECT) {
+ object = Z_INDIRECT_P(object);
+ }
+
+ value = get_zval_ptr((opline+1)->op1_type, &(opline+1)->op1, execute_data, &free_op_data1, BP_VAR_R);
+
if (UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
zend_error(E_WARNING, "Attempt to assign property of non-object");
zval_ptr_dtor_nogc(free_op2.var);
} else {
target_symbol_table = zend_get_target_symbol_table(opline->extended_value & ZEND_FETCH_TYPE_MASK TSRMLS_CC);
//???: STRING may become INDIRECT
- if (Z_TYPE_P(varname) == IS_INDIRECT) {
+ if (IS_CV == IS_CV && Z_TYPE_P(varname) == IS_INDIRECT) {
varname = Z_INDIRECT_P(varname);
}
/*
} else {
target_symbol_table = zend_get_target_symbol_table(opline->extended_value & ZEND_FETCH_TYPE_MASK TSRMLS_CC);
//???: STRING may become INDIRECT
- if (Z_TYPE_P(varname) == IS_INDIRECT) {
+ if (IS_CV == IS_CV && Z_TYPE_P(varname) == IS_INDIRECT) {
varname = Z_INDIRECT_P(varname);
}
zend_delete_variable(execute_data, target_symbol_table, Z_STR_P(varname) TSRMLS_CC);
} else {
target_symbol_table = zend_get_target_symbol_table(opline->extended_value & ZEND_FETCH_TYPE_MASK TSRMLS_CC);
//???: STRING may become INDIRECT
- if (Z_TYPE_P(varname) == IS_INDIRECT) {
+ if (IS_CV == IS_CV && Z_TYPE_P(varname) == IS_INDIRECT) {
varname = Z_INDIRECT_P(varname);
}
if ((value = zend_hash_find(target_symbol_table, Z_STR_P(varname))) == NULL) {
zend_free_op free_op_data1;
zval *object = _get_zval_ptr_cv_BP_VAR_RW(execute_data, opline->op1.var TSRMLS_CC);
zval *property = NULL;
- zval *value = get_zval_ptr((opline+1)->op1_type, &(opline+1)->op1, execute_data, &free_op_data1, BP_VAR_R);
+ zval *value;
int have_get_ptr = 0;
if (IS_CV == IS_VAR && UNEXPECTED(Z_TYPE_P(object) == IS_STR_OFFSET)) {
make_real_object(object TSRMLS_CC);
+//???: object may become INDIRECT
+ if (IS_CV == IS_CV && Z_TYPE_P(object) == IS_INDIRECT) {
+ object = Z_INDIRECT_P(object);
+ }
+
+ value = get_zval_ptr((opline+1)->op1_type, &(opline+1)->op1, execute_data, &free_op_data1, BP_VAR_R);
+
if (UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
zend_error(E_WARNING, "Attempt to assign property of non-object");
} else {
target_symbol_table = zend_get_target_symbol_table(opline->extended_value & ZEND_FETCH_TYPE_MASK TSRMLS_CC);
//???: STRING may become INDIRECT
- if (Z_TYPE_P(varname) == IS_INDIRECT) {
+ if (IS_CV == IS_CV && Z_TYPE_P(varname) == IS_INDIRECT) {
varname = Z_INDIRECT_P(varname);
}
/*
} else {
target_symbol_table = zend_get_target_symbol_table(opline->extended_value & ZEND_FETCH_TYPE_MASK TSRMLS_CC);
//???: STRING may become INDIRECT
- if (Z_TYPE_P(varname) == IS_INDIRECT) {
+ if (IS_CV == IS_CV && Z_TYPE_P(varname) == IS_INDIRECT) {
varname = Z_INDIRECT_P(varname);
}
zend_delete_variable(execute_data, target_symbol_table, Z_STR_P(varname) TSRMLS_CC);
} else {
target_symbol_table = zend_get_target_symbol_table(opline->extended_value & ZEND_FETCH_TYPE_MASK TSRMLS_CC);
//???: STRING may become INDIRECT
- if (Z_TYPE_P(varname) == IS_INDIRECT) {
+ if (IS_CV == IS_CV && Z_TYPE_P(varname) == IS_INDIRECT) {
varname = Z_INDIRECT_P(varname);
}
if ((value = zend_hash_find(target_symbol_table, Z_STR_P(varname))) == NULL) {
zend_free_op free_op_data1;
zval *object = _get_zval_ptr_cv_BP_VAR_RW(execute_data, opline->op1.var TSRMLS_CC);
zval *property = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC);
- zval *value = get_zval_ptr((opline+1)->op1_type, &(opline+1)->op1, execute_data, &free_op_data1, BP_VAR_R);
+ zval *value;
int have_get_ptr = 0;
if (IS_CV == IS_VAR && UNEXPECTED(Z_TYPE_P(object) == IS_STR_OFFSET)) {
make_real_object(object TSRMLS_CC);
+//???: object may become INDIRECT
+ if (IS_CV == IS_CV && Z_TYPE_P(object) == IS_INDIRECT) {
+ object = Z_INDIRECT_P(object);
+ }
+
+ value = get_zval_ptr((opline+1)->op1_type, &(opline+1)->op1, execute_data, &free_op_data1, BP_VAR_R);
+
if (UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
zend_error(E_WARNING, "Attempt to assign property of non-object");