summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorBouke van der Bijl <[email protected]>2016-11-15 11:13:38 -0500
committerBouke van der Bijl <[email protected]>2016-12-09 10:30:05 -0500
commit1264219832aeff2630f47d4abb9bee6d013c3e75 (patch)
tree3a6933344ff3c8d1f16f80e23678c2bb7ca781e7
parentc85feaec56b942ad4049079ed6f2df46f20a577d (diff)
downloadmruby-1264219832aeff2630f47d4abb9bee6d013c3e75.tar.gz
mruby-1264219832aeff2630f47d4abb9bee6d013c3e75.zip
Fix segfault in gen_values with NOVAL and more than 127 args
-rw-r--r--mrbgems/mruby-compiler/core/codegen.c2
-rw-r--r--test/t/codegen.rb8
2 files changed, 8 insertions, 2 deletions
diff --git a/mrbgems/mruby-compiler/core/codegen.c b/mrbgems/mruby-compiler/core/codegen.c
index 3cfd99d41..99ab4dd97 100644
--- a/mrbgems/mruby-compiler/core/codegen.c
+++ b/mrbgems/mruby-compiler/core/codegen.c
@@ -818,8 +818,6 @@ gen_values(codegen_scope *s, node *t, int val)
}
}
else {
- codegen(s, t->car->cdr, NOVAL);
- t = t->cdr;
while (t) {
codegen(s, t->car, NOVAL);
t = t->cdr;
diff --git a/test/t/codegen.rb b/test/t/codegen.rb
index 3058a7fbc..528f58d9e 100644
--- a/test/t/codegen.rb
+++ b/test/t/codegen.rb
@@ -73,3 +73,11 @@ assert('undef with 127 or more arguments') do
a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a
end
end
+
+assert('next in normal loop with 127 arguments') do
+ assert_raise NameError do
+ while true
+ next A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A,A
+ end
+ end
+end