summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2017-02-27 18:39:42 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2017-02-27 18:39:42 +0900
commit3fc9bf3d5f8c653a86a7c419ff87ca9176b008af (patch)
tree05db21deba79793334066c4c71215e78ace5e648
parentd219e63a74b4d264c3c71a477c1813f23ff1f771 (diff)
downloadmruby-3fc9bf3d5f8c653a86a7c419ff87ca9176b008af.tar.gz
mruby-3fc9bf3d5f8c653a86a7c419ff87ca9176b008af.zip
Update local variable only after the value is checked.
-rw-r--r--src/vm.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/vm.c b/src/vm.c
index a370ec919..3ff54a88f 100644
--- a/src/vm.c
+++ b/src/vm.c
@@ -1620,12 +1620,12 @@ RETRY_TRY_BLOCK:
stk = mrb->c->stack;
while (ci[0].ridx == ci[-1].ridx) {
cipop(mrb);
- ci = mrb->c->ci;
- mrb->c->stack = ci[1].stackent;
- if (ci[1].acc == CI_ACC_SKIP && prev_jmp) {
+ mrb->c->stack = ci->stackent;
+ if (ci->acc == CI_ACC_SKIP && prev_jmp) {
mrb->jmp = prev_jmp;
MRB_THROW(prev_jmp);
}
+ ci = mrb->c->ci;
if (ci == mrb->c->cibase) {
mrb->c->stack = stk;
while (eidx > 0) {