Browse Source

- Make sure expr_list and echo_list are either empty or comma seperated

expressions
experimetnal/RETURN_REF_PATCH
Andi Gutmans 27 years ago
parent
commit
e5fbf4414a
  1. 9
      Zend/zend-parser.y
  2. 6
      Zend/zend_opcode.c

9
Zend/zend-parser.y

@ -348,9 +348,8 @@ class_variable_decleration:
| T_VARIABLE '=' static_scalar { do_declare_property(&$1, &$3 CLS_CC); }
;
echo_expr_list:
/* empty */
| echo_expr_list ',' expr { do_echo(&$3 CLS_CC); }
| expr { do_echo(&$1 CLS_CC); }
;
@ -358,7 +357,11 @@ echo_expr_list:
for_expr:
/* empty */ { $$.op_type = IS_CONST; $$.u.constant.type = IS_BOOL; $$.u.constant.value.lval = 1; }
| for_expr ',' { do_free(&$1 CLS_CC); } expr { $$ = $4; }
| non_empty_for_expr { $$ = $1; }
;
non_empty_for_expr:
non_empty_for_expr ',' { do_free(&$1 CLS_CC); } expr { $$ = $4; }
| expr { $$ = $1; }
;

6
Zend/zend_opcode.c

@ -215,6 +215,12 @@ zend_op *get_next_op(zend_op_array *op_array CLS_DC)
next_op->filename = zend_get_compiled_filename();
next_op->result.op_type = IS_UNUSED;
next_op->extended_value = 0;
next_op->op1.u.EA.var = 0;
next_op->op1.u.EA.type = 0;
next_op->op2.u.EA.var = 0;
next_op->op2.u.EA.type = 0;
next_op->result.u.EA.var = 0;
next_op->result.u.EA.type = 0;
return next_op;
}

Loading…
Cancel
Save