From 8f096226e1b76f95f4d853d3dea2bc75eeeb5244 Mon Sep 17 00:00:00 2001 From: Aaron Patterson Date: Thu, 5 Sep 2019 11:04:43 -0700 Subject: Stash tmpbuffer inside internal structs I guess those AST node were actually used for something, so we'd better not touch them. Instead this commit just puts the tmpbuffer inside a different internal struct so that we can mark them. --- node.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'node.c') diff --git a/node.c b/node.c index 7c73bb8be6..d844473988 100644 --- a/node.c +++ b/node.c @@ -1265,6 +1265,16 @@ mark_ast_value(void *ctx, NODE * node) } break; } + case NODE_ARYPTN: + { + struct rb_ary_pattern_info *apinfo = node->nd_apinfo; + rb_gc_mark(apinfo->imemo); + } + case NODE_ARGS: + { + struct rb_args_info *args = node->nd_ainfo; + rb_gc_mark(args->imemo); + } case NODE_LIT: case NODE_STR: case NODE_XSTR: @@ -1272,8 +1282,6 @@ mark_ast_value(void *ctx, NODE * node) case NODE_DXSTR: case NODE_DREGX: case NODE_DSYM: - case NODE_ARGS: - case NODE_ARYPTN: rb_gc_mark(node->nd_lit); break; default: -- cgit v1.2.1