summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2017-05-25 10:31:48 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2017-05-25 10:31:48 +0900
commit9bca887ac454770a8d759832853a78a5fc942147 (patch)
tree5814f01bb96cf08ad4201f9655dca7461052be52 /src
parent9644ad51b4a63d8db46d7918ec5e89a547236c56 (diff)
downloadmruby-9bca887ac454770a8d759832853a78a5fc942147.tar.gz
mruby-9bca887ac454770a8d759832853a78a5fc942147.zip
Preserve the current pc before `method_missing()`; fix #3660
Diffstat (limited to 'src')
-rw-r--r--src/vm.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/vm.c b/src/vm.c
index 896be7ad9..354931f37 100644
--- a/src/vm.c
+++ b/src/vm.c
@@ -1273,6 +1273,7 @@ RETRY_TRY_BLOCK:
else {
args = mrb_ary_new_from_values(mrb, n, regs+a+1);
}
+ ERR_PC_SET(mrb, pc);
mrb_method_missing(mrb, mid, recv, args);
}
mid = missing;
@@ -1460,6 +1461,7 @@ RETRY_TRY_BLOCK:
else {
args = mrb_ary_new_from_values(mrb, n, regs+a+1);
}
+ ERR_PC_SET(mrb, pc);
mrb_method_missing(mrb, mid, recv, args);
}
mid = missing;
@@ -1941,6 +1943,7 @@ RETRY_TRY_BLOCK:
else {
args = mrb_ary_new_from_values(mrb, n, regs+a+1);
}
+ ERR_PC_SET(mrb, pc);
mrb_method_missing(mrb, mid, recv, args);
}
mid = missing;