summaryrefslogtreecommitdiff
path: root/iseq.c
diff options
context:
space:
mode:
Diffstat (limited to 'iseq.c')
-rw-r--r--iseq.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/iseq.c b/iseq.c
index d6644f220f..c26850c045 100644
--- a/iseq.c
+++ b/iseq.c
@@ -177,9 +177,16 @@ set_relation(rb_iseq_t *iseq, const VALUE parent)
/* set class nest stack */
if (type == ISEQ_TYPE_TOP) {
/* toplevel is private */
- iseq->cref_stack = NEW_BLOCK(th->top_wrapper ? th->top_wrapper : rb_cObject);
+ iseq->cref_stack = NEW_BLOCK(rb_cObject);
iseq->cref_stack->nd_file = 0;
iseq->cref_stack->nd_visi = NOEX_PRIVATE;
+ if (th->top_wrapper) {
+ NODE *cref = NEW_BLOCK(th->top_wrapper);
+ cref->nd_file = 0;
+ cref->nd_visi = NOEX_PRIVATE;
+ cref->nd_next = iseq->cref_stack;
+ iseq->cref_stack = cref;
+ }
}
else if (type == ISEQ_TYPE_METHOD || type == ISEQ_TYPE_CLASS) {
iseq->cref_stack = NEW_BLOCK(0); /* place holder */