summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authoryui-knk <[email protected]>2014-06-02 09:38:24 +0900
committeryui-knk <[email protected]>2014-06-02 09:38:24 +0900
commitb5ef16ba0336aef1cbdd57805a76bbf4e05c1cdb (patch)
tree0806c7e8bd0cf5530d177814dd6bea75e9e51778
parenta22495df003cd0d9df729b7adb276a7f65b3fff7 (diff)
downloadmruby-b5ef16ba0336aef1cbdd57805a76bbf4e05c1cdb.tar.gz
mruby-b5ef16ba0336aef1cbdd57805a76bbf4e05c1cdb.zip
Change to always use locals->car->car.
When p->locals->car is not NULL and p->locals->car->car is NULL, local_add_f dose not append sym to p->locals->car->car. This commit change to append sym to p->locals->car->car. This will close #2333.
-rw-r--r--src/parse.y6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/parse.y b/src/parse.y
index 719e78218..ab5caa28e 100644
--- a/src/parse.y
+++ b/src/parse.y
@@ -257,7 +257,11 @@ local_var_p(parser_state *p, mrb_sym sym)
static void
local_add_f(parser_state *p, mrb_sym sym)
{
- p->locals->car = push(p->locals->car, nsym(sym));
+ if (p->locals->car && !p->locals->car->car) {
+ p->locals->car->car = nsym(sym);
+ } else {
+ p->locals->car = push(p->locals->car, nsym(sym));
+ }
}
static void