diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2016-12-03 12:53:21 +0900 |
|---|---|---|
| committer | GitHub <[email protected]> | 2016-12-03 12:53:21 +0900 |
| commit | 23c4ad08654c7a277edd1b56716012f361f044fa (patch) | |
| tree | 9d77f1607ee2d7bac001ce36d7c17ec945aa8122 | |
| parent | 79a621dd739faf4cc0958e11d6a887331cf79e48 (diff) | |
| parent | fe362c1f2649c9c502d9a5998ef8c4c94893f3ea (diff) | |
| download | mruby-23c4ad08654c7a277edd1b56716012f361f044fa.tar.gz mruby-23c4ad08654c7a277edd1b56716012f361f044fa.zip | |
Merge pull request #3319 from bouk/apost-splatt
Fix segfault when using result of rest assignment
| -rw-r--r-- | mrbgems/mruby-compiler/core/codegen.c | 4 | ||||
| -rw-r--r-- | test/t/codegen.rb | 9 |
2 files changed, 12 insertions, 1 deletions
diff --git a/mrbgems/mruby-compiler/core/codegen.c b/mrbgems/mruby-compiler/core/codegen.c index 553baa116..2c75c8aed 100644 --- a/mrbgems/mruby-compiler/core/codegen.c +++ b/mrbgems/mruby-compiler/core/codegen.c @@ -1061,7 +1061,9 @@ gen_vmassignment(codegen_scope *s, node *tree, int rhs, int val) n++; } } - push(); + if (!val) { + push(); + } } } diff --git a/test/t/codegen.rb b/test/t/codegen.rb index 1ac689a82..bb0f5c306 100644 --- a/test/t/codegen.rb +++ b/test/t/codegen.rb @@ -54,3 +54,12 @@ A B assert_equal "\n", a end + +assert('splat in case splat') do + a = *case + when 0 + * = 1 + end + + assert_equal [1], a +end |
