cvs: ZendEngine2 / zend_compile.c zend_language_parser.y
| From: | Andi Gutmans | Date: | Mon, 18 Mar 2002 20:27:04 +0000 |
| Subject: | cvs: ZendEngine2 / zend_compile.c zend_language_parser.y | ||
| Groups: | php.zend-engine.cvs | ||
| Request: | Send a blank email to php-zend-engine-cvs+get-28@lists.php.net to get a copy of this message | ||
andi Mon Mar 18 15:27:04 2002 EDT
Modified files:
/ZendEngine2 zend_compile.c zend_language_parser.y
Log:
- More fixes to check for member/function call legality.
Index: ZendEngine2/zend_compile.c
diff -u ZendEngine2/zend_compile.c:1.280 ZendEngine2/zend_compile.c:1.281
--- ZendEngine2/zend_compile.c:1.280 Sun Mar 17 14:13:44 2002
+++ ZendEngine2/zend_compile.c Mon Mar 18 15:27:03 2002
@@ -1355,7 +1355,7 @@
zend_op *opline;
if (do_end_vparse) {
- if (CG(active_op_array)->return_reference) {
+ if (CG(active_op_array)->return_reference && !zend_is_function_or_method_call(expr)) {
zend_do_end_variable_parse(BP_VAR_W, 0 TSRMLS_CC);
} else {
zend_do_end_variable_parse(BP_VAR_R, 0 TSRMLS_CC);
Index: ZendEngine2/zend_language_parser.y
diff -u ZendEngine2/zend_language_parser.y:1.52 ZendEngine2/zend_language_parser.y:1.53
--- ZendEngine2/zend_language_parser.y:1.52 Sun Mar 17 14:13:46 2002
+++ ZendEngine2/zend_language_parser.y Mon Mar 18 15:27:03 2002
@@ -194,7 +194,7 @@
| T_CONTINUE expr ';' { zend_do_brk_cont(ZEND_CONT, &$2 TSRMLS_CC); }
| T_RETURN ';' { zend_do_return(NULL, 0 TSRMLS_CC); }
| T_RETURN expr_without_variable ';' { zend_do_return(&$2, 0 TSRMLS_CC); }
- | T_RETURN cvar ';' { zend_do_return(&$2, 1 TSRMLS_CC); }
+ | T_RETURN variable ';' { zend_do_return(&$2, 1 TSRMLS_CC); }
| T_GLOBAL global_var_list ';'
| T_STATIC static_var_list ';'
| T_ECHO echo_expr_list ';'
@@ -389,10 +389,10 @@
non_empty_function_call_parameter_list:
expr_without_variable { $$.u.constant.value.lval = 1; zend_do_pass_param(&$1, ZEND_SEND_VAL,
$$.u.constant.value.lval TSRMLS_CC); }
- | cvar { $$.u.constant.value.lval = 1; zend_do_pass_param(&$1, ZEND_SEND_VAR,
$$.u.constant.value.lval TSRMLS_CC); }
+ | variable { $$.u.constant.value.lval = 1; zend_do_pass_param(&$1, ZEND_SEND_VAR,
$$.u.constant.value.lval TSRMLS_CC); }
| '&' w_cvar { $$.u.constant.value.lval = 1; zend_do_pass_param(&$2,
ZEND_SEND_REF, $$.u.constant.value.lval TSRMLS_CC); }
| non_empty_function_call_parameter_list ',' expr_without_variable {
$$.u.constant.value.lval=$1.u.constant.value.lval+1; zend_do_pass_param(&$3, ZEND_SEND_VAL,
$$.u.constant.value.lval TSRMLS_CC); }
- | non_empty_function_call_parameter_list ',' cvar {
$$.u.constant.value.lval=$1.u.constant.value.lval+1; zend_do_pass_param(&$3, ZEND_SEND_VAR,
$$.u.constant.value.lval TSRMLS_CC); }
+ | non_empty_function_call_parameter_list ',' variable {
$$.u.constant.value.lval=$1.u.constant.value.lval+1; zend_do_pass_param(&$3, ZEND_SEND_VAR,
$$.u.constant.value.lval TSRMLS_CC); }
| non_empty_function_call_parameter_list ',' '&' w_cvar {
$$.u.constant.value.lval=$1.u.constant.value.lval+1; zend_do_pass_param(&$4, ZEND_SEND_REF,
$$.u.constant.value.lval TSRMLS_CC); }
;