summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2016-12-10 11:21:54 +0900
committerGitHub <[email protected]>2016-12-10 11:21:54 +0900
commit8c26efd7ed0cbaaf85b2e090bb2801f00b9c1226 (patch)
tree3a6933344ff3c8d1f16f80e23678c2bb7ca781e7
parentc85feaec56b942ad4049079ed6f2df46f20a577d (diff)
parent1264219832aeff2630f47d4abb9bee6d013c3e75 (diff)
downloadmruby-8c26efd7ed0cbaaf85b2e090bb2801f00b9c1226.tar.gz
mruby-8c26efd7ed0cbaaf85b2e090bb2801f00b9c1226.zip
Merge pull request #3338 from bouk/break-127
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