diff options
| author | Bouke van der Bijl <[email protected]> | 2016-11-24 13:31:47 -0500 |
|---|---|---|
| committer | Bouke van der Bijl <[email protected]> | 2016-12-01 15:49:36 -0500 |
| commit | fe362c1f2649c9c502d9a5998ef8c4c94893f3ea (patch) | |
| tree | 295ff985f5e13c821398ae0f784122a279a67aeb | |
| parent | 2cca9d368815e9c83a7489c40d69937d68cb43a2 (diff) | |
| download | mruby-fe362c1f2649c9c502d9a5998ef8c4c94893f3ea.tar.gz mruby-fe362c1f2649c9c502d9a5998ef8c4c94893f3ea.zip | |
Fix segfault when using result of rest assignment
Reported by https://hackerone.com/haquaman
| -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 |
