summaryrefslogtreecommitdiffhomepage
path: root/src/vm.c
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2012-05-12 02:58:00 -0700
committerYukihiro "Matz" Matsumoto <[email protected]>2012-05-12 02:58:00 -0700
commit96819cf88188704f87746198a5fcc515d17a4676 (patch)
tree5daee619b4bc3326dfde1e744edc693f073aa9f5 /src/vm.c
parent04f8ec7570e79a64c586414edbf8b607da1f1670 (diff)
parent66df0ad0a8c3aa3b225c4e60899c2c3329d929d8 (diff)
downloadmruby-96819cf88188704f87746198a5fcc515d17a4676.tar.gz
mruby-96819cf88188704f87746198a5fcc515d17a4676.zip
Merge pull request #117 from k-tsj/toplevel-return
Raise LocalJumpError when returning from top-level
Diffstat (limited to 'src/vm.c')
-rw-r--r--src/vm.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/vm.c b/src/vm.c
index 43705a48f..cfb404ee3 100644
--- a/src/vm.c
+++ b/src/vm.c
@@ -1002,6 +1002,10 @@ mrb_run(mrb_state *mrb, struct RProc *proc, mrb_value self)
switch (GETARG_B(i)) {
case OP_R_NORMAL:
+ if (ci == mrb->cibase) {
+ localjump_error(mrb, "return");
+ goto L_RAISE;
+ }
ci = mrb->ci;
break;
case OP_R_BREAK: