diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2021-10-16 11:09:52 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2021-10-16 11:09:52 +0900 |
| commit | 36bca25e5860bc9bc2664a981b5463b94c87ddd3 (patch) | |
| tree | 151c1fa186a56213da23e68b45b1fcde3ab29597 /mrbgems | |
| parent | 0dc5fcec7be22cb84c4bd537dd140f97c10b7b48 (diff) | |
| download | mruby-36bca25e5860bc9bc2664a981b5463b94c87ddd3.tar.gz mruby-36bca25e5860bc9bc2664a981b5463b94c87ddd3.zip | |
codegen.c: `s2` may be `NULL`.
Since `s2` is `NULL` on top-level, it will be an error. No need to
generate strict bytecode.
Diffstat (limited to 'mrbgems')
| -rw-r--r-- | mrbgems/mruby-compiler/core/codegen.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/mrbgems/mruby-compiler/core/codegen.c b/mrbgems/mruby-compiler/core/codegen.c index e7aa9c5b0..bf18106e8 100644 --- a/mrbgems/mruby-compiler/core/codegen.c +++ b/mrbgems/mruby-compiler/core/codegen.c @@ -2811,7 +2811,7 @@ codegen(codegen_scope *s, node *tree, int val) } } /* keyword arguments */ - if ((s2->ainfo & 0x1) && tree->cdr->car) { + if (s2 && (s2->ainfo & 0x1) && tree->cdr->car) { nk = gen_hash(s, tree->cdr->car->cdr, VAL, 14); if (nk < 0) {st++; nk = 15;} else st += nk; @@ -2821,6 +2821,9 @@ codegen(codegen_scope *s, node *tree, int val) if (tree->cdr->cdr) { codegen(s, tree->cdr->cdr, VAL); } + else if (!s2) {/* super at top-level */ + push(); /* no need to push block */ + } else { gen_blkmove(s, s2->ainfo, lv); } |
