value = get_zval_ptr(&op_data->op1, EX(Ts), &free_op_data1, BP_VAR_R);
variable_ptr_ptr = _get_zval_ptr_ptr_var(&op_data->op2, EX(Ts), &free_op_data2 TSRMLS_CC);
if (!variable_ptr_ptr) {
- zend_assign_to_string_offset(&EX_T(op_data->op2.u.var), value, op_data->op1.op_type TSRMLS_CC);
+ if (zend_assign_to_string_offset(&EX_T(op_data->op2.u.var), value, op_data->op1.op_type TSRMLS_CC)) {
+ if (!RETURN_VALUE_UNUSED(&opline->result)) {
+ EX_T(opline->result.u.var).var.ptr_ptr = &EX_T(opline->result.u.var).var.ptr;
+ ALLOC_ZVAL(EX_T(opline->result.u.var).var.ptr);
+ INIT_PZVAL(EX_T(opline->result.u.var).var.ptr);
+ ZVAL_STRINGL(EX_T(opline->result.u.var).var.ptr, Z_STRVAL_P(EX_T(op_data->op2.u.var).str_offset.str)+EX_T(op_data->op2.u.var).str_offset.offset, 1, 1);
+ }
+ } else if (!RETURN_VALUE_UNUSED(&opline->result)) {
+ AI_SET_PTR(EX_T(opline->result.u.var).var, EG(uninitialized_zval_ptr));
+ PZVAL_LOCK(EG(uninitialized_zval_ptr));
+ }
} else {
value = zend_assign_to_variable(variable_ptr_ptr, value, IS_TMP_FREE(free_op_data1) TSRMLS_CC);
- }
- if (!RETURN_VALUE_UNUSED(&opline->result)) {
- AI_SET_PTR(EX_T(opline->result.u.var).var, value);
- PZVAL_LOCK(value);
+ if (!RETURN_VALUE_UNUSED(&opline->result)) {
+ AI_SET_PTR(EX_T(opline->result.u.var).var, value);
+ PZVAL_LOCK(value);
+ }
}
FREE_OP_VAR_PTR(free_op_data2);
FREE_OP_IF_VAR(free_op_data1);
zval **variable_ptr_ptr = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
if (!variable_ptr_ptr) {
- zend_assign_to_string_offset(&EX_T(opline->op1.u.var), value, IS_CONST TSRMLS_CC);
+ if (zend_assign_to_string_offset(&EX_T(opline->op1.u.var), value, IS_CONST TSRMLS_CC)) {
+ if (!RETURN_VALUE_UNUSED(&opline->result)) {
+ EX_T(opline->result.u.var).var.ptr_ptr = &EX_T(opline->result.u.var).var.ptr;
+ ALLOC_ZVAL(EX_T(opline->result.u.var).var.ptr);
+ INIT_PZVAL(EX_T(opline->result.u.var).var.ptr);
+ ZVAL_STRINGL(EX_T(opline->result.u.var).var.ptr, Z_STRVAL_P(EX_T(opline->op1.u.var).str_offset.str)+EX_T(opline->op1.u.var).str_offset.offset, 1, 1);
+ }
+ } else if (!RETURN_VALUE_UNUSED(&opline->result)) {
+ AI_SET_PTR(EX_T(opline->result.u.var).var, EG(uninitialized_zval_ptr));
+ PZVAL_LOCK(EG(uninitialized_zval_ptr));
+ }
} else {
value = zend_assign_to_variable(variable_ptr_ptr, value, 0 TSRMLS_CC);
- }
-
- if (!RETURN_VALUE_UNUSED(&opline->result)) {
- AI_SET_PTR(EX_T(opline->result.u.var).var, value);
- PZVAL_LOCK(value);
+ if (!RETURN_VALUE_UNUSED(&opline->result)) {
+ AI_SET_PTR(EX_T(opline->result.u.var).var, value);
+ PZVAL_LOCK(value);
+ }
}
if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
value = get_zval_ptr(&op_data->op1, EX(Ts), &free_op_data1, BP_VAR_R);
variable_ptr_ptr = _get_zval_ptr_ptr_var(&op_data->op2, EX(Ts), &free_op_data2 TSRMLS_CC);
if (!variable_ptr_ptr) {
- zend_assign_to_string_offset(&EX_T(op_data->op2.u.var), value, op_data->op1.op_type TSRMLS_CC);
+ if (zend_assign_to_string_offset(&EX_T(op_data->op2.u.var), value, op_data->op1.op_type TSRMLS_CC)) {
+ if (!RETURN_VALUE_UNUSED(&opline->result)) {
+ EX_T(opline->result.u.var).var.ptr_ptr = &EX_T(opline->result.u.var).var.ptr;
+ ALLOC_ZVAL(EX_T(opline->result.u.var).var.ptr);
+ INIT_PZVAL(EX_T(opline->result.u.var).var.ptr);
+ ZVAL_STRINGL(EX_T(opline->result.u.var).var.ptr, Z_STRVAL_P(EX_T(op_data->op2.u.var).str_offset.str)+EX_T(op_data->op2.u.var).str_offset.offset, 1, 1);
+ }
+ } else if (!RETURN_VALUE_UNUSED(&opline->result)) {
+ AI_SET_PTR(EX_T(opline->result.u.var).var, EG(uninitialized_zval_ptr));
+ PZVAL_LOCK(EG(uninitialized_zval_ptr));
+ }
} else {
value = zend_assign_to_variable(variable_ptr_ptr, value, IS_TMP_FREE(free_op_data1) TSRMLS_CC);
- }
- if (!RETURN_VALUE_UNUSED(&opline->result)) {
- AI_SET_PTR(EX_T(opline->result.u.var).var, value);
- PZVAL_LOCK(value);
+ if (!RETURN_VALUE_UNUSED(&opline->result)) {
+ AI_SET_PTR(EX_T(opline->result.u.var).var, value);
+ PZVAL_LOCK(value);
+ }
}
FREE_OP_VAR_PTR(free_op_data2);
FREE_OP_IF_VAR(free_op_data1);
zval **variable_ptr_ptr = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
if (!variable_ptr_ptr) {
- zend_assign_to_string_offset(&EX_T(opline->op1.u.var), value, IS_TMP_VAR TSRMLS_CC);
+ if (zend_assign_to_string_offset(&EX_T(opline->op1.u.var), value, IS_TMP_VAR TSRMLS_CC)) {
+ if (!RETURN_VALUE_UNUSED(&opline->result)) {
+ EX_T(opline->result.u.var).var.ptr_ptr = &EX_T(opline->result.u.var).var.ptr;
+ ALLOC_ZVAL(EX_T(opline->result.u.var).var.ptr);
+ INIT_PZVAL(EX_T(opline->result.u.var).var.ptr);
+ ZVAL_STRINGL(EX_T(opline->result.u.var).var.ptr, Z_STRVAL_P(EX_T(opline->op1.u.var).str_offset.str)+EX_T(opline->op1.u.var).str_offset.offset, 1, 1);
+ }
+ } else if (!RETURN_VALUE_UNUSED(&opline->result)) {
+ AI_SET_PTR(EX_T(opline->result.u.var).var, EG(uninitialized_zval_ptr));
+ PZVAL_LOCK(EG(uninitialized_zval_ptr));
+ }
} else {
value = zend_assign_to_variable(variable_ptr_ptr, value, 1 TSRMLS_CC);
- }
-
- if (!RETURN_VALUE_UNUSED(&opline->result)) {
- AI_SET_PTR(EX_T(opline->result.u.var).var, value);
- PZVAL_LOCK(value);
+ if (!RETURN_VALUE_UNUSED(&opline->result)) {
+ AI_SET_PTR(EX_T(opline->result.u.var).var, value);
+ PZVAL_LOCK(value);
+ }
}
if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
value = get_zval_ptr(&op_data->op1, EX(Ts), &free_op_data1, BP_VAR_R);
variable_ptr_ptr = _get_zval_ptr_ptr_var(&op_data->op2, EX(Ts), &free_op_data2 TSRMLS_CC);
if (!variable_ptr_ptr) {
- zend_assign_to_string_offset(&EX_T(op_data->op2.u.var), value, op_data->op1.op_type TSRMLS_CC);
+ if (zend_assign_to_string_offset(&EX_T(op_data->op2.u.var), value, op_data->op1.op_type TSRMLS_CC)) {
+ if (!RETURN_VALUE_UNUSED(&opline->result)) {
+ EX_T(opline->result.u.var).var.ptr_ptr = &EX_T(opline->result.u.var).var.ptr;
+ ALLOC_ZVAL(EX_T(opline->result.u.var).var.ptr);
+ INIT_PZVAL(EX_T(opline->result.u.var).var.ptr);
+ ZVAL_STRINGL(EX_T(opline->result.u.var).var.ptr, Z_STRVAL_P(EX_T(op_data->op2.u.var).str_offset.str)+EX_T(op_data->op2.u.var).str_offset.offset, 1, 1);
+ }
+ } else if (!RETURN_VALUE_UNUSED(&opline->result)) {
+ AI_SET_PTR(EX_T(opline->result.u.var).var, EG(uninitialized_zval_ptr));
+ PZVAL_LOCK(EG(uninitialized_zval_ptr));
+ }
} else {
value = zend_assign_to_variable(variable_ptr_ptr, value, IS_TMP_FREE(free_op_data1) TSRMLS_CC);
- }
- if (!RETURN_VALUE_UNUSED(&opline->result)) {
- AI_SET_PTR(EX_T(opline->result.u.var).var, value);
- PZVAL_LOCK(value);
+ if (!RETURN_VALUE_UNUSED(&opline->result)) {
+ AI_SET_PTR(EX_T(opline->result.u.var).var, value);
+ PZVAL_LOCK(value);
+ }
}
FREE_OP_VAR_PTR(free_op_data2);
FREE_OP_IF_VAR(free_op_data1);
zval **variable_ptr_ptr = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
if (!variable_ptr_ptr) {
- zend_assign_to_string_offset(&EX_T(opline->op1.u.var), value, IS_VAR TSRMLS_CC);
+ if (zend_assign_to_string_offset(&EX_T(opline->op1.u.var), value, IS_VAR TSRMLS_CC)) {
+ if (!RETURN_VALUE_UNUSED(&opline->result)) {
+ EX_T(opline->result.u.var).var.ptr_ptr = &EX_T(opline->result.u.var).var.ptr;
+ ALLOC_ZVAL(EX_T(opline->result.u.var).var.ptr);
+ INIT_PZVAL(EX_T(opline->result.u.var).var.ptr);
+ ZVAL_STRINGL(EX_T(opline->result.u.var).var.ptr, Z_STRVAL_P(EX_T(opline->op1.u.var).str_offset.str)+EX_T(opline->op1.u.var).str_offset.offset, 1, 1);
+ }
+ } else if (!RETURN_VALUE_UNUSED(&opline->result)) {
+ AI_SET_PTR(EX_T(opline->result.u.var).var, EG(uninitialized_zval_ptr));
+ PZVAL_LOCK(EG(uninitialized_zval_ptr));
+ }
} else {
value = zend_assign_to_variable(variable_ptr_ptr, value, 0 TSRMLS_CC);
- }
-
- if (!RETURN_VALUE_UNUSED(&opline->result)) {
- AI_SET_PTR(EX_T(opline->result.u.var).var, value);
- PZVAL_LOCK(value);
+ if (!RETURN_VALUE_UNUSED(&opline->result)) {
+ AI_SET_PTR(EX_T(opline->result.u.var).var, value);
+ PZVAL_LOCK(value);
+ }
}
if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
value = get_zval_ptr(&op_data->op1, EX(Ts), &free_op_data1, BP_VAR_R);
variable_ptr_ptr = _get_zval_ptr_ptr_var(&op_data->op2, EX(Ts), &free_op_data2 TSRMLS_CC);
if (!variable_ptr_ptr) {
- zend_assign_to_string_offset(&EX_T(op_data->op2.u.var), value, op_data->op1.op_type TSRMLS_CC);
+ if (zend_assign_to_string_offset(&EX_T(op_data->op2.u.var), value, op_data->op1.op_type TSRMLS_CC)) {
+ if (!RETURN_VALUE_UNUSED(&opline->result)) {
+ EX_T(opline->result.u.var).var.ptr_ptr = &EX_T(opline->result.u.var).var.ptr;
+ ALLOC_ZVAL(EX_T(opline->result.u.var).var.ptr);
+ INIT_PZVAL(EX_T(opline->result.u.var).var.ptr);
+ ZVAL_STRINGL(EX_T(opline->result.u.var).var.ptr, Z_STRVAL_P(EX_T(op_data->op2.u.var).str_offset.str)+EX_T(op_data->op2.u.var).str_offset.offset, 1, 1);
+ }
+ } else if (!RETURN_VALUE_UNUSED(&opline->result)) {
+ AI_SET_PTR(EX_T(opline->result.u.var).var, EG(uninitialized_zval_ptr));
+ PZVAL_LOCK(EG(uninitialized_zval_ptr));
+ }
} else {
value = zend_assign_to_variable(variable_ptr_ptr, value, IS_TMP_FREE(free_op_data1) TSRMLS_CC);
- }
- if (!RETURN_VALUE_UNUSED(&opline->result)) {
- AI_SET_PTR(EX_T(opline->result.u.var).var, value);
- PZVAL_LOCK(value);
+ if (!RETURN_VALUE_UNUSED(&opline->result)) {
+ AI_SET_PTR(EX_T(opline->result.u.var).var, value);
+ PZVAL_LOCK(value);
+ }
}
FREE_OP_VAR_PTR(free_op_data2);
FREE_OP_IF_VAR(free_op_data1);
value = get_zval_ptr(&op_data->op1, EX(Ts), &free_op_data1, BP_VAR_R);
variable_ptr_ptr = _get_zval_ptr_ptr_var(&op_data->op2, EX(Ts), &free_op_data2 TSRMLS_CC);
if (!variable_ptr_ptr) {
- zend_assign_to_string_offset(&EX_T(op_data->op2.u.var), value, op_data->op1.op_type TSRMLS_CC);
+ if (zend_assign_to_string_offset(&EX_T(op_data->op2.u.var), value, op_data->op1.op_type TSRMLS_CC)) {
+ if (!RETURN_VALUE_UNUSED(&opline->result)) {
+ EX_T(opline->result.u.var).var.ptr_ptr = &EX_T(opline->result.u.var).var.ptr;
+ ALLOC_ZVAL(EX_T(opline->result.u.var).var.ptr);
+ INIT_PZVAL(EX_T(opline->result.u.var).var.ptr);
+ ZVAL_STRINGL(EX_T(opline->result.u.var).var.ptr, Z_STRVAL_P(EX_T(op_data->op2.u.var).str_offset.str)+EX_T(op_data->op2.u.var).str_offset.offset, 1, 1);
+ }
+ } else if (!RETURN_VALUE_UNUSED(&opline->result)) {
+ AI_SET_PTR(EX_T(opline->result.u.var).var, EG(uninitialized_zval_ptr));
+ PZVAL_LOCK(EG(uninitialized_zval_ptr));
+ }
} else {
value = zend_assign_to_variable(variable_ptr_ptr, value, IS_TMP_FREE(free_op_data1) TSRMLS_CC);
- }
- if (!RETURN_VALUE_UNUSED(&opline->result)) {
- AI_SET_PTR(EX_T(opline->result.u.var).var, value);
- PZVAL_LOCK(value);
+ if (!RETURN_VALUE_UNUSED(&opline->result)) {
+ AI_SET_PTR(EX_T(opline->result.u.var).var, value);
+ PZVAL_LOCK(value);
+ }
}
FREE_OP_VAR_PTR(free_op_data2);
FREE_OP_IF_VAR(free_op_data1);
zval **variable_ptr_ptr = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
if (!variable_ptr_ptr) {
- zend_assign_to_string_offset(&EX_T(opline->op1.u.var), value, IS_CV TSRMLS_CC);
+ if (zend_assign_to_string_offset(&EX_T(opline->op1.u.var), value, IS_CV TSRMLS_CC)) {
+ if (!RETURN_VALUE_UNUSED(&opline->result)) {
+ EX_T(opline->result.u.var).var.ptr_ptr = &EX_T(opline->result.u.var).var.ptr;
+ ALLOC_ZVAL(EX_T(opline->result.u.var).var.ptr);
+ INIT_PZVAL(EX_T(opline->result.u.var).var.ptr);
+ ZVAL_STRINGL(EX_T(opline->result.u.var).var.ptr, Z_STRVAL_P(EX_T(opline->op1.u.var).str_offset.str)+EX_T(opline->op1.u.var).str_offset.offset, 1, 1);
+ }
+ } else if (!RETURN_VALUE_UNUSED(&opline->result)) {
+ AI_SET_PTR(EX_T(opline->result.u.var).var, EG(uninitialized_zval_ptr));
+ PZVAL_LOCK(EG(uninitialized_zval_ptr));
+ }
} else {
value = zend_assign_to_variable(variable_ptr_ptr, value, 0 TSRMLS_CC);
- }
-
- if (!RETURN_VALUE_UNUSED(&opline->result)) {
- AI_SET_PTR(EX_T(opline->result.u.var).var, value);
- PZVAL_LOCK(value);
+ if (!RETURN_VALUE_UNUSED(&opline->result)) {
+ AI_SET_PTR(EX_T(opline->result.u.var).var, value);
+ PZVAL_LOCK(value);
+ }
}
if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
value = get_zval_ptr(&op_data->op1, EX(Ts), &free_op_data1, BP_VAR_R);
variable_ptr_ptr = _get_zval_ptr_ptr_var(&op_data->op2, EX(Ts), &free_op_data2 TSRMLS_CC);
if (!variable_ptr_ptr) {
- zend_assign_to_string_offset(&EX_T(op_data->op2.u.var), value, op_data->op1.op_type TSRMLS_CC);
+ if (zend_assign_to_string_offset(&EX_T(op_data->op2.u.var), value, op_data->op1.op_type TSRMLS_CC)) {
+ if (!RETURN_VALUE_UNUSED(&opline->result)) {
+ EX_T(opline->result.u.var).var.ptr_ptr = &EX_T(opline->result.u.var).var.ptr;
+ ALLOC_ZVAL(EX_T(opline->result.u.var).var.ptr);
+ INIT_PZVAL(EX_T(opline->result.u.var).var.ptr);
+ ZVAL_STRINGL(EX_T(opline->result.u.var).var.ptr, Z_STRVAL_P(EX_T(op_data->op2.u.var).str_offset.str)+EX_T(op_data->op2.u.var).str_offset.offset, 1, 1);
+ }
+ } else if (!RETURN_VALUE_UNUSED(&opline->result)) {
+ AI_SET_PTR(EX_T(opline->result.u.var).var, EG(uninitialized_zval_ptr));
+ PZVAL_LOCK(EG(uninitialized_zval_ptr));
+ }
} else {
value = zend_assign_to_variable(variable_ptr_ptr, value, IS_TMP_FREE(free_op_data1) TSRMLS_CC);
- }
- if (!RETURN_VALUE_UNUSED(&opline->result)) {
- AI_SET_PTR(EX_T(opline->result.u.var).var, value);
- PZVAL_LOCK(value);
+ if (!RETURN_VALUE_UNUSED(&opline->result)) {
+ AI_SET_PTR(EX_T(opline->result.u.var).var, value);
+ PZVAL_LOCK(value);
+ }
}
FREE_OP_VAR_PTR(free_op_data2);
FREE_OP_IF_VAR(free_op_data1);
zval **variable_ptr_ptr = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_W TSRMLS_CC);
if (!variable_ptr_ptr) {
- zend_assign_to_string_offset(&EX_T(opline->op1.u.var), value, IS_CONST TSRMLS_CC);
+ if (zend_assign_to_string_offset(&EX_T(opline->op1.u.var), value, IS_CONST TSRMLS_CC)) {
+ if (!RETURN_VALUE_UNUSED(&opline->result)) {
+ EX_T(opline->result.u.var).var.ptr_ptr = &EX_T(opline->result.u.var).var.ptr;
+ ALLOC_ZVAL(EX_T(opline->result.u.var).var.ptr);
+ INIT_PZVAL(EX_T(opline->result.u.var).var.ptr);
+ ZVAL_STRINGL(EX_T(opline->result.u.var).var.ptr, Z_STRVAL_P(EX_T(opline->op1.u.var).str_offset.str)+EX_T(opline->op1.u.var).str_offset.offset, 1, 1);
+ }
+ } else if (!RETURN_VALUE_UNUSED(&opline->result)) {
+ AI_SET_PTR(EX_T(opline->result.u.var).var, EG(uninitialized_zval_ptr));
+ PZVAL_LOCK(EG(uninitialized_zval_ptr));
+ }
} else {
value = zend_assign_to_variable(variable_ptr_ptr, value, 0 TSRMLS_CC);
- }
-
- if (!RETURN_VALUE_UNUSED(&opline->result)) {
- AI_SET_PTR(EX_T(opline->result.u.var).var, value);
- PZVAL_LOCK(value);
+ if (!RETURN_VALUE_UNUSED(&opline->result)) {
+ AI_SET_PTR(EX_T(opline->result.u.var).var, value);
+ PZVAL_LOCK(value);
+ }
}
/* zend_assign_to_variable() always takes care of op2, never free it! */
value = get_zval_ptr(&op_data->op1, EX(Ts), &free_op_data1, BP_VAR_R);
variable_ptr_ptr = _get_zval_ptr_ptr_var(&op_data->op2, EX(Ts), &free_op_data2 TSRMLS_CC);
if (!variable_ptr_ptr) {
- zend_assign_to_string_offset(&EX_T(op_data->op2.u.var), value, op_data->op1.op_type TSRMLS_CC);
+ if (zend_assign_to_string_offset(&EX_T(op_data->op2.u.var), value, op_data->op1.op_type TSRMLS_CC)) {
+ if (!RETURN_VALUE_UNUSED(&opline->result)) {
+ EX_T(opline->result.u.var).var.ptr_ptr = &EX_T(opline->result.u.var).var.ptr;
+ ALLOC_ZVAL(EX_T(opline->result.u.var).var.ptr);
+ INIT_PZVAL(EX_T(opline->result.u.var).var.ptr);
+ ZVAL_STRINGL(EX_T(opline->result.u.var).var.ptr, Z_STRVAL_P(EX_T(op_data->op2.u.var).str_offset.str)+EX_T(op_data->op2.u.var).str_offset.offset, 1, 1);
+ }
+ } else if (!RETURN_VALUE_UNUSED(&opline->result)) {
+ AI_SET_PTR(EX_T(opline->result.u.var).var, EG(uninitialized_zval_ptr));
+ PZVAL_LOCK(EG(uninitialized_zval_ptr));
+ }
} else {
value = zend_assign_to_variable(variable_ptr_ptr, value, IS_TMP_FREE(free_op_data1) TSRMLS_CC);
- }
- if (!RETURN_VALUE_UNUSED(&opline->result)) {
- AI_SET_PTR(EX_T(opline->result.u.var).var, value);
- PZVAL_LOCK(value);
+ if (!RETURN_VALUE_UNUSED(&opline->result)) {
+ AI_SET_PTR(EX_T(opline->result.u.var).var, value);
+ PZVAL_LOCK(value);
+ }
}
FREE_OP_VAR_PTR(free_op_data2);
FREE_OP_IF_VAR(free_op_data1);
zval **variable_ptr_ptr = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_W TSRMLS_CC);
if (!variable_ptr_ptr) {
- zend_assign_to_string_offset(&EX_T(opline->op1.u.var), value, IS_TMP_VAR TSRMLS_CC);
+ if (zend_assign_to_string_offset(&EX_T(opline->op1.u.var), value, IS_TMP_VAR TSRMLS_CC)) {
+ if (!RETURN_VALUE_UNUSED(&opline->result)) {
+ EX_T(opline->result.u.var).var.ptr_ptr = &EX_T(opline->result.u.var).var.ptr;
+ ALLOC_ZVAL(EX_T(opline->result.u.var).var.ptr);
+ INIT_PZVAL(EX_T(opline->result.u.var).var.ptr);
+ ZVAL_STRINGL(EX_T(opline->result.u.var).var.ptr, Z_STRVAL_P(EX_T(opline->op1.u.var).str_offset.str)+EX_T(opline->op1.u.var).str_offset.offset, 1, 1);
+ }
+ } else if (!RETURN_VALUE_UNUSED(&opline->result)) {
+ AI_SET_PTR(EX_T(opline->result.u.var).var, EG(uninitialized_zval_ptr));
+ PZVAL_LOCK(EG(uninitialized_zval_ptr));
+ }
} else {
value = zend_assign_to_variable(variable_ptr_ptr, value, 1 TSRMLS_CC);
- }
-
- if (!RETURN_VALUE_UNUSED(&opline->result)) {
- AI_SET_PTR(EX_T(opline->result.u.var).var, value);
- PZVAL_LOCK(value);
+ if (!RETURN_VALUE_UNUSED(&opline->result)) {
+ AI_SET_PTR(EX_T(opline->result.u.var).var, value);
+ PZVAL_LOCK(value);
+ }
}
/* zend_assign_to_variable() always takes care of op2, never free it! */
value = get_zval_ptr(&op_data->op1, EX(Ts), &free_op_data1, BP_VAR_R);
variable_ptr_ptr = _get_zval_ptr_ptr_var(&op_data->op2, EX(Ts), &free_op_data2 TSRMLS_CC);
if (!variable_ptr_ptr) {
- zend_assign_to_string_offset(&EX_T(op_data->op2.u.var), value, op_data->op1.op_type TSRMLS_CC);
+ if (zend_assign_to_string_offset(&EX_T(op_data->op2.u.var), value, op_data->op1.op_type TSRMLS_CC)) {
+ if (!RETURN_VALUE_UNUSED(&opline->result)) {
+ EX_T(opline->result.u.var).var.ptr_ptr = &EX_T(opline->result.u.var).var.ptr;
+ ALLOC_ZVAL(EX_T(opline->result.u.var).var.ptr);
+ INIT_PZVAL(EX_T(opline->result.u.var).var.ptr);
+ ZVAL_STRINGL(EX_T(opline->result.u.var).var.ptr, Z_STRVAL_P(EX_T(op_data->op2.u.var).str_offset.str)+EX_T(op_data->op2.u.var).str_offset.offset, 1, 1);
+ }
+ } else if (!RETURN_VALUE_UNUSED(&opline->result)) {
+ AI_SET_PTR(EX_T(opline->result.u.var).var, EG(uninitialized_zval_ptr));
+ PZVAL_LOCK(EG(uninitialized_zval_ptr));
+ }
} else {
value = zend_assign_to_variable(variable_ptr_ptr, value, IS_TMP_FREE(free_op_data1) TSRMLS_CC);
- }
- if (!RETURN_VALUE_UNUSED(&opline->result)) {
- AI_SET_PTR(EX_T(opline->result.u.var).var, value);
- PZVAL_LOCK(value);
+ if (!RETURN_VALUE_UNUSED(&opline->result)) {
+ AI_SET_PTR(EX_T(opline->result.u.var).var, value);
+ PZVAL_LOCK(value);
+ }
}
FREE_OP_VAR_PTR(free_op_data2);
FREE_OP_IF_VAR(free_op_data1);
zval **variable_ptr_ptr = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_W TSRMLS_CC);
if (!variable_ptr_ptr) {
- zend_assign_to_string_offset(&EX_T(opline->op1.u.var), value, IS_VAR TSRMLS_CC);
+ if (zend_assign_to_string_offset(&EX_T(opline->op1.u.var), value, IS_VAR TSRMLS_CC)) {
+ if (!RETURN_VALUE_UNUSED(&opline->result)) {
+ EX_T(opline->result.u.var).var.ptr_ptr = &EX_T(opline->result.u.var).var.ptr;
+ ALLOC_ZVAL(EX_T(opline->result.u.var).var.ptr);
+ INIT_PZVAL(EX_T(opline->result.u.var).var.ptr);
+ ZVAL_STRINGL(EX_T(opline->result.u.var).var.ptr, Z_STRVAL_P(EX_T(opline->op1.u.var).str_offset.str)+EX_T(opline->op1.u.var).str_offset.offset, 1, 1);
+ }
+ } else if (!RETURN_VALUE_UNUSED(&opline->result)) {
+ AI_SET_PTR(EX_T(opline->result.u.var).var, EG(uninitialized_zval_ptr));
+ PZVAL_LOCK(EG(uninitialized_zval_ptr));
+ }
} else {
value = zend_assign_to_variable(variable_ptr_ptr, value, 0 TSRMLS_CC);
- }
-
- if (!RETURN_VALUE_UNUSED(&opline->result)) {
- AI_SET_PTR(EX_T(opline->result.u.var).var, value);
- PZVAL_LOCK(value);
+ if (!RETURN_VALUE_UNUSED(&opline->result)) {
+ AI_SET_PTR(EX_T(opline->result.u.var).var, value);
+ PZVAL_LOCK(value);
+ }
}
/* zend_assign_to_variable() always takes care of op2, never free it! */
value = get_zval_ptr(&op_data->op1, EX(Ts), &free_op_data1, BP_VAR_R);
variable_ptr_ptr = _get_zval_ptr_ptr_var(&op_data->op2, EX(Ts), &free_op_data2 TSRMLS_CC);
if (!variable_ptr_ptr) {
- zend_assign_to_string_offset(&EX_T(op_data->op2.u.var), value, op_data->op1.op_type TSRMLS_CC);
+ if (zend_assign_to_string_offset(&EX_T(op_data->op2.u.var), value, op_data->op1.op_type TSRMLS_CC)) {
+ if (!RETURN_VALUE_UNUSED(&opline->result)) {
+ EX_T(opline->result.u.var).var.ptr_ptr = &EX_T(opline->result.u.var).var.ptr;
+ ALLOC_ZVAL(EX_T(opline->result.u.var).var.ptr);
+ INIT_PZVAL(EX_T(opline->result.u.var).var.ptr);
+ ZVAL_STRINGL(EX_T(opline->result.u.var).var.ptr, Z_STRVAL_P(EX_T(op_data->op2.u.var).str_offset.str)+EX_T(op_data->op2.u.var).str_offset.offset, 1, 1);
+ }
+ } else if (!RETURN_VALUE_UNUSED(&opline->result)) {
+ AI_SET_PTR(EX_T(opline->result.u.var).var, EG(uninitialized_zval_ptr));
+ PZVAL_LOCK(EG(uninitialized_zval_ptr));
+ }
} else {
value = zend_assign_to_variable(variable_ptr_ptr, value, IS_TMP_FREE(free_op_data1) TSRMLS_CC);
- }
- if (!RETURN_VALUE_UNUSED(&opline->result)) {
- AI_SET_PTR(EX_T(opline->result.u.var).var, value);
- PZVAL_LOCK(value);
+ if (!RETURN_VALUE_UNUSED(&opline->result)) {
+ AI_SET_PTR(EX_T(opline->result.u.var).var, value);
+ PZVAL_LOCK(value);
+ }
}
FREE_OP_VAR_PTR(free_op_data2);
FREE_OP_IF_VAR(free_op_data1);
value = get_zval_ptr(&op_data->op1, EX(Ts), &free_op_data1, BP_VAR_R);
variable_ptr_ptr = _get_zval_ptr_ptr_var(&op_data->op2, EX(Ts), &free_op_data2 TSRMLS_CC);
if (!variable_ptr_ptr) {
- zend_assign_to_string_offset(&EX_T(op_data->op2.u.var), value, op_data->op1.op_type TSRMLS_CC);
+ if (zend_assign_to_string_offset(&EX_T(op_data->op2.u.var), value, op_data->op1.op_type TSRMLS_CC)) {
+ if (!RETURN_VALUE_UNUSED(&opline->result)) {
+ EX_T(opline->result.u.var).var.ptr_ptr = &EX_T(opline->result.u.var).var.ptr;
+ ALLOC_ZVAL(EX_T(opline->result.u.var).var.ptr);
+ INIT_PZVAL(EX_T(opline->result.u.var).var.ptr);
+ ZVAL_STRINGL(EX_T(opline->result.u.var).var.ptr, Z_STRVAL_P(EX_T(op_data->op2.u.var).str_offset.str)+EX_T(op_data->op2.u.var).str_offset.offset, 1, 1);
+ }
+ } else if (!RETURN_VALUE_UNUSED(&opline->result)) {
+ AI_SET_PTR(EX_T(opline->result.u.var).var, EG(uninitialized_zval_ptr));
+ PZVAL_LOCK(EG(uninitialized_zval_ptr));
+ }
} else {
value = zend_assign_to_variable(variable_ptr_ptr, value, IS_TMP_FREE(free_op_data1) TSRMLS_CC);
- }
- if (!RETURN_VALUE_UNUSED(&opline->result)) {
- AI_SET_PTR(EX_T(opline->result.u.var).var, value);
- PZVAL_LOCK(value);
+ if (!RETURN_VALUE_UNUSED(&opline->result)) {
+ AI_SET_PTR(EX_T(opline->result.u.var).var, value);
+ PZVAL_LOCK(value);
+ }
}
FREE_OP_VAR_PTR(free_op_data2);
FREE_OP_IF_VAR(free_op_data1);
zval **variable_ptr_ptr = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_W TSRMLS_CC);
if (!variable_ptr_ptr) {
- zend_assign_to_string_offset(&EX_T(opline->op1.u.var), value, IS_CV TSRMLS_CC);
+ if (zend_assign_to_string_offset(&EX_T(opline->op1.u.var), value, IS_CV TSRMLS_CC)) {
+ if (!RETURN_VALUE_UNUSED(&opline->result)) {
+ EX_T(opline->result.u.var).var.ptr_ptr = &EX_T(opline->result.u.var).var.ptr;
+ ALLOC_ZVAL(EX_T(opline->result.u.var).var.ptr);
+ INIT_PZVAL(EX_T(opline->result.u.var).var.ptr);
+ ZVAL_STRINGL(EX_T(opline->result.u.var).var.ptr, Z_STRVAL_P(EX_T(opline->op1.u.var).str_offset.str)+EX_T(opline->op1.u.var).str_offset.offset, 1, 1);
+ }
+ } else if (!RETURN_VALUE_UNUSED(&opline->result)) {
+ AI_SET_PTR(EX_T(opline->result.u.var).var, EG(uninitialized_zval_ptr));
+ PZVAL_LOCK(EG(uninitialized_zval_ptr));
+ }
} else {
value = zend_assign_to_variable(variable_ptr_ptr, value, 0 TSRMLS_CC);
- }
-
- if (!RETURN_VALUE_UNUSED(&opline->result)) {
- AI_SET_PTR(EX_T(opline->result.u.var).var, value);
- PZVAL_LOCK(value);
+ if (!RETURN_VALUE_UNUSED(&opline->result)) {
+ AI_SET_PTR(EX_T(opline->result.u.var).var, value);
+ PZVAL_LOCK(value);
+ }
}
/* zend_assign_to_variable() always takes care of op2, never free it! */