aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog4
-rw-r--r--parse.y14
2 files changed, 9 insertions, 9 deletions
diff --git a/ChangeLog b/ChangeLog
index 8d06e6433f..f0ae8dfb4e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,4 @@
-Wed Feb 13 03:12:54 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * parse.y (stmt, arg): concat opt_call_args only if non-null.
+Wed Feb 13 04:15:44 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
* parse.y (arg_concat_gen, arg_append_gen): optimize for array push.
diff --git a/parse.y b/parse.y
index 593557f9ed..24fc338e51 100644
--- a/parse.y
+++ b/parse.y
@@ -1027,10 +1027,11 @@ stmt : keyword_alias fitem {lex_state = EXPR_FNAME;} fitem
| primary_value '[' opt_call_args rbracket tOP_ASGN command_call
{
/*%%%*/
- NODE *args = $6;
+ NODE *args;
- value_expr(args);
- if ($3) args = arg_concat(args, $3);
+ value_expr($6);
+ if (!$3) $3 = NEW_ZARRAY();
+ args = arg_concat($6, $3);
if ($5 == tOROP) {
$5 = 0;
}
@@ -1828,10 +1829,11 @@ arg : lhs '=' arg
| primary_value '[' opt_call_args rbracket tOP_ASGN arg
{
/*%%%*/
- NODE *args = $6;
+ NODE *args;
- value_expr(args);
- if ($3) args = arg_concat(args, $3);
+ value_expr($6);
+ if (!$3) $3 = NEW_ZARRAY();
+ args = arg_concat($6, $3);
if ($5 == tOROP) {
$5 = 0;
}