expr_without_variable:
T_LIST '(' { zend_do_list_init(TSRMLS_C); } assignment_list ')' '=' expr { zend_do_list_end(&$$, &$7 TSRMLS_CC); }
| variable '=' expr { zend_check_writable_variable(&$1); zend_do_end_variable_parse(BP_VAR_W, 0 TSRMLS_CC); zend_do_assign(&$$, &$1, &$3 TSRMLS_CC); }
- | variable '=' '&' variable { zend_check_writable_variable(&$1); zend_do_end_variable_parse(BP_VAR_W, 0 TSRMLS_CC); zend_do_end_variable_parse(BP_VAR_W, 0 TSRMLS_CC); zend_do_assign_ref(&$$, &$1, &$4 TSRMLS_CC); }
+ | variable '=' '&' variable { zend_check_writable_variable(&$1); zend_do_end_variable_parse(BP_VAR_W, 1 TSRMLS_CC); zend_do_end_variable_parse(BP_VAR_W, 0 TSRMLS_CC); zend_do_assign_ref(&$$, &$1, &$4 TSRMLS_CC); }
| variable '=' '&' T_NEW class_name_reference { zend_error(E_STRICT, "Assigning the return value of new by reference is deprecated"); zend_check_writable_variable(&$1); zend_do_extended_fcall_begin(TSRMLS_C); zend_do_begin_new_object(&$4, &$5 TSRMLS_CC); } ctor_arguments { zend_do_end_new_object(&$3, &$4, &$7 TSRMLS_CC); zend_do_extended_fcall_end(TSRMLS_C); zend_do_end_variable_parse(BP_VAR_W, 0 TSRMLS_CC); zend_do_assign_ref(&$$, &$1, &$3 TSRMLS_CC); }
| T_NEW class_name_reference { zend_do_extended_fcall_begin(TSRMLS_C); zend_do_begin_new_object(&$1, &$2 TSRMLS_CC); } ctor_arguments { zend_do_end_new_object(&$$, &$1, &$4 TSRMLS_CC); zend_do_extended_fcall_end(TSRMLS_C); $$.u.EA.type = ZEND_PARSED_NEW; }
| T_CLONE expr { zend_do_clone(&$$, &$2 TSRMLS_CC); }
AI_USE_PTR(EX_T(opline->result.u.var).var);
}
if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
+
+ /* We are going to assign the result by reference */
+ if (opline->extended_value) {
+ Z_DELREF_PP(EX_T(opline->result.u.var).var.ptr_ptr);
+ SEPARATE_ZVAL_TO_MAKE_IS_REF(EX_T(opline->result.u.var).var.ptr_ptr);
+ Z_ADDREF_PP(EX_T(opline->result.u.var).var.ptr_ptr);
+ }
+
ZEND_VM_NEXT_OPCODE();
}
AI_USE_PTR(EX_T(opline->result.u.var).var);
}
if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
+
+ /* We are going to assign the result by reference */
+ if (opline->extended_value) {
+ Z_DELREF_PP(EX_T(opline->result.u.var).var.ptr_ptr);
+ SEPARATE_ZVAL_TO_MAKE_IS_REF(EX_T(opline->result.u.var).var.ptr_ptr);
+ Z_ADDREF_PP(EX_T(opline->result.u.var).var.ptr_ptr);
+ }
+
ZEND_VM_NEXT_OPCODE();
}
AI_USE_PTR(EX_T(opline->result.u.var).var);
}
if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
+
+ /* We are going to assign the result by reference */
+ if (opline->extended_value) {
+ Z_DELREF_PP(EX_T(opline->result.u.var).var.ptr_ptr);
+ SEPARATE_ZVAL_TO_MAKE_IS_REF(EX_T(opline->result.u.var).var.ptr_ptr);
+ Z_ADDREF_PP(EX_T(opline->result.u.var).var.ptr_ptr);
+ }
+
ZEND_VM_NEXT_OPCODE();
}
AI_USE_PTR(EX_T(opline->result.u.var).var);
}
if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
+
+ /* We are going to assign the result by reference */
+ if (opline->extended_value) {
+ Z_DELREF_PP(EX_T(opline->result.u.var).var.ptr_ptr);
+ SEPARATE_ZVAL_TO_MAKE_IS_REF(EX_T(opline->result.u.var).var.ptr_ptr);
+ Z_ADDREF_PP(EX_T(opline->result.u.var).var.ptr_ptr);
+ }
+
ZEND_VM_NEXT_OPCODE();
}
AI_USE_PTR(EX_T(opline->result.u.var).var);
}
if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
+
+ /* We are going to assign the result by reference */
+ if (opline->extended_value) {
+ Z_DELREF_PP(EX_T(opline->result.u.var).var.ptr_ptr);
+ SEPARATE_ZVAL_TO_MAKE_IS_REF(EX_T(opline->result.u.var).var.ptr_ptr);
+ Z_ADDREF_PP(EX_T(opline->result.u.var).var.ptr_ptr);
+ }
+
ZEND_VM_NEXT_OPCODE();
}
AI_USE_PTR(EX_T(opline->result.u.var).var);
}
+ /* We are going to assign the result by reference */
+ if (opline->extended_value) {
+ Z_DELREF_PP(EX_T(opline->result.u.var).var.ptr_ptr);
+ SEPARATE_ZVAL_TO_MAKE_IS_REF(EX_T(opline->result.u.var).var.ptr_ptr);
+ Z_ADDREF_PP(EX_T(opline->result.u.var).var.ptr_ptr);
+ }
+
ZEND_VM_NEXT_OPCODE();
}
AI_USE_PTR(EX_T(opline->result.u.var).var);
}
+ /* We are going to assign the result by reference */
+ if (opline->extended_value) {
+ Z_DELREF_PP(EX_T(opline->result.u.var).var.ptr_ptr);
+ SEPARATE_ZVAL_TO_MAKE_IS_REF(EX_T(opline->result.u.var).var.ptr_ptr);
+ Z_ADDREF_PP(EX_T(opline->result.u.var).var.ptr_ptr);
+ }
+
ZEND_VM_NEXT_OPCODE();
}
AI_USE_PTR(EX_T(opline->result.u.var).var);
}
+ /* We are going to assign the result by reference */
+ if (opline->extended_value) {
+ Z_DELREF_PP(EX_T(opline->result.u.var).var.ptr_ptr);
+ SEPARATE_ZVAL_TO_MAKE_IS_REF(EX_T(opline->result.u.var).var.ptr_ptr);
+ Z_ADDREF_PP(EX_T(opline->result.u.var).var.ptr_ptr);
+ }
+
ZEND_VM_NEXT_OPCODE();
}
AI_USE_PTR(EX_T(opline->result.u.var).var);
}
+ /* We are going to assign the result by reference */
+ if (opline->extended_value) {
+ Z_DELREF_PP(EX_T(opline->result.u.var).var.ptr_ptr);
+ SEPARATE_ZVAL_TO_MAKE_IS_REF(EX_T(opline->result.u.var).var.ptr_ptr);
+ Z_ADDREF_PP(EX_T(opline->result.u.var).var.ptr_ptr);
+ }
+
ZEND_VM_NEXT_OPCODE();
}
AI_USE_PTR(EX_T(opline->result.u.var).var);
}
+ /* We are going to assign the result by reference */
+ if (opline->extended_value) {
+ Z_DELREF_PP(EX_T(opline->result.u.var).var.ptr_ptr);
+ SEPARATE_ZVAL_TO_MAKE_IS_REF(EX_T(opline->result.u.var).var.ptr_ptr);
+ Z_ADDREF_PP(EX_T(opline->result.u.var).var.ptr_ptr);
+ }
+
ZEND_VM_NEXT_OPCODE();
}