aboutsummaryrefslogtreecommitdiffstats
path: root/gc.c
diff options
context:
space:
mode:
Diffstat (limited to 'gc.c')
-rw-r--r--gc.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/gc.c b/gc.c
index b4b5466274..7f1a4983d9 100644
--- a/gc.c
+++ b/gc.c
@@ -1344,7 +1344,8 @@ rb_newobj_of(VALUE klass, VALUE flags)
NODE*
rb_node_newnode(enum node_type type, VALUE a0, VALUE a1, VALUE a2)
{
- NODE *n = (NODE *)newobj_of(0, T_NODE, a0, a1, a2);
+ VALUE flags = (RGENGC_WB_PROTECTED_NODE_CREF && type == NODE_CREF ? FL_WB_PROTECTED : 0);
+ NODE *n = (NODE *)newobj_of(0, T_NODE | flags, a0, a1, a2);
nd_set_type(n, type);
return n;
}