diff options
| author | ksss <[email protected]> | 2016-09-26 12:17:46 +0900 |
|---|---|---|
| committer | ksss <[email protected]> | 2016-09-26 12:17:46 +0900 |
| commit | b1fa180ea31d1d3030e088b873b248c1a39c22ac (patch) | |
| tree | 0e8464e26decc19bfbd309e9882049824baa6400 /mrbgems/mruby-compiler/core/codegen.c | |
| parent | 7a382e8bdfeb745ccda70c749daa0bc94fe51f3b (diff) | |
| download | mruby-b1fa180ea31d1d3030e088b873b248c1a39c22ac.tar.gz mruby-b1fa180ea31d1d3030e088b873b248c1a39c22ac.zip | |
Fix unexpected behavior with break
```
def yie
yield
end
def bre
yie {
1+1
break
}
end
p bre #=> display 2, but should be nil
```
Diffstat (limited to 'mrbgems/mruby-compiler/core/codegen.c')
| -rw-r--r-- | mrbgems/mruby-compiler/core/codegen.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/mrbgems/mruby-compiler/core/codegen.c b/mrbgems/mruby-compiler/core/codegen.c index 6e9c3c147..efdd77888 100644 --- a/mrbgems/mruby-compiler/core/codegen.c +++ b/mrbgems/mruby-compiler/core/codegen.c @@ -2852,6 +2852,9 @@ loop_break(codegen_scope *s, node *tree) loop->pc3 = tmp; } else { + if (!tree) { + genop(s, MKOP_A(OP_LOADNIL, cursp())); + } genop(s, MKOP_AB(OP_RETURN, cursp(), OP_R_BREAK)); } } |
