summaryrefslogtreecommitdiffhomepage
path: root/src/variable.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/variable.c')
-rw-r--r--src/variable.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/variable.c b/src/variable.c
index 0b4288734..8b94f5bbb 100644
--- a/src/variable.c
+++ b/src/variable.c
@@ -233,8 +233,9 @@ mrb_obj_instance_variables(mrb_state *mrb, mrb_value self)
mrb_value
mrb_vm_cv_get(mrb_state *mrb, mrb_sym sym)
{
- struct RClass *c = mrb->ci->target_class;
+ struct RClass *c = mrb->ci->proc->target_class;
+ if (!c) c = mrb->ci->target_class;
while (c) {
if (c->iv) {
khash_t(iv) *h = c->iv;
@@ -251,10 +252,11 @@ mrb_vm_cv_get(mrb_state *mrb, mrb_sym sym)
void
mrb_vm_cv_set(mrb_state *mrb, mrb_sym sym, mrb_value v)
{
- struct RClass *c = mrb->ci->target_class;
+ struct RClass *c = mrb->ci->proc->target_class;
khash_t(iv) *h;
khiter_t k;
+ if (!c) c = mrb->ci->target_class;
while (c) {
if (c->iv) {
h = c->iv;