summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorksss <[email protected]>2016-09-26 12:17:46 +0900
committerksss <[email protected]>2016-09-26 12:17:46 +0900
commitb1fa180ea31d1d3030e088b873b248c1a39c22ac (patch)
tree0e8464e26decc19bfbd309e9882049824baa6400
parent7a382e8bdfeb745ccda70c749daa0bc94fe51f3b (diff)
downloadmruby-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 ```
-rw-r--r--mrbgems/mruby-compiler/core/codegen.c3
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));
}
}