diff options
| author | cremno <[email protected]> | 2015-06-01 13:54:20 +0200 |
|---|---|---|
| committer | cremno <[email protected]> | 2015-06-01 13:54:20 +0200 |
| commit | 7e8fb15457f08faf0fd6b7e1d0823140ecee2a60 (patch) | |
| tree | 93fd0d81967d6fe5e071814c89733a9d7806927f /src/codegen.c | |
| parent | bd2686d82d233774003fe683e9396f366b152b6d (diff) | |
| download | mruby-7e8fb15457f08faf0fd6b7e1d0823140ecee2a60.tar.gz mruby-7e8fb15457f08faf0fd6b7e1d0823140ecee2a60.zip | |
only generate gets of non-local vars in VAL mode
This fixes a crash for code like "#{@a;1}".
Unlike CRuby globals are excluded too since mruby doesn't implement
hooking.
Diffstat (limited to 'src/codegen.c')
| -rw-r--r-- | src/codegen.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/src/codegen.c b/src/codegen.c index be630b9a8..16233347c 100644 --- a/src/codegen.c +++ b/src/codegen.c @@ -1911,7 +1911,7 @@ codegen(codegen_scope *s, node *tree, int val) break; case NODE_GVAR: - { + if (val) { int sym = new_sym(s, sym(tree)); genop(s, MKOP_ABx(OP_GETGLOBAL, cursp(), sym)); @@ -1920,7 +1920,7 @@ codegen(codegen_scope *s, node *tree, int val) break; case NODE_IVAR: - { + if (val) { int sym = new_sym(s, sym(tree)); genop(s, MKOP_ABx(OP_GETIV, cursp(), sym)); @@ -1929,7 +1929,7 @@ codegen(codegen_scope *s, node *tree, int val) break; case NODE_CVAR: - { + if (val) { int sym = new_sym(s, sym(tree)); genop(s, MKOP_ABx(OP_GETCV, cursp(), sym)); @@ -1951,7 +1951,7 @@ codegen(codegen_scope *s, node *tree, int val) break; case NODE_BACK_REF: - { + if (val) { char buf[2] = { '$' }; mrb_value str; int sym; @@ -1965,7 +1965,7 @@ codegen(codegen_scope *s, node *tree, int val) break; case NODE_NTH_REF: - { + if (val) { int sym; mrb_state *mrb = s->mrb; mrb_value fix = mrb_fixnum_value((intptr_t)tree); |
