summaryrefslogtreecommitdiffhomepage
path: root/mrbgems
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2021-10-16 11:09:52 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2021-10-16 11:09:52 +0900
commit36bca25e5860bc9bc2664a981b5463b94c87ddd3 (patch)
tree151c1fa186a56213da23e68b45b1fcde3ab29597 /mrbgems
parent0dc5fcec7be22cb84c4bd537dd140f97c10b7b48 (diff)
downloadmruby-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.c5
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);
}