summaryrefslogtreecommitdiffhomepage
path: root/mrbgems/mruby-eval
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2014-10-17 15:48:58 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2014-10-17 15:48:58 +0900
commit3ff5081650cd510186a1e0105641dd10e8b4e7c8 (patch)
tree4df075c1dde2334bc29ff6a8660a7030989dc6da /mrbgems/mruby-eval
parentc5a23e6a0dd92edc239401b18f43d2268e290784 (diff)
downloadmruby-3ff5081650cd510186a1e0105641dd10e8b4e7c8.tar.gz
mruby-3ff5081650cd510186a1e0105641dd10e8b4e7c8.zip
context proc may be cfunc; fix #2609
Diffstat (limited to 'mrbgems/mruby-eval')
-rw-r--r--mrbgems/mruby-eval/src/eval.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/mrbgems/mruby-eval/src/eval.c b/mrbgems/mruby-eval/src/eval.c
index 5f6e03ed7..e97e580fa 100644
--- a/mrbgems/mruby-eval/src/eval.c
+++ b/mrbgems/mruby-eval/src/eval.c
@@ -23,6 +23,9 @@ get_closure_irep(mrb_state *mrb, int level)
if (!e) return NULL;
proc = mrb->c->cibase[e->cioff].proc;
+ if (MRB_PROC_CFUNC_P(proc)) {
+ return NULL;
+ }
return proc->body.irep;
}
@@ -34,7 +37,7 @@ search_variable(mrb_state *mrb, mrb_sym vsym, int bnest)
int pos;
for (level = 0; (virep = get_closure_irep(mrb, level)); level++) {
- if (virep->lv == NULL) {
+ if (!virep || virep->lv == NULL) {
continue;
}
for (pos = 0; pos < virep->nlocals - 1; pos++) {