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 - - * parse.y (stmt, arg): concat opt_call_args only if non-null. +Wed Feb 13 04:15:44 2008 Nobuyoshi Nakada * 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; }