From 139510238bcbb8d7fd8022c23a603c51d2acbe2e Mon Sep 17 00:00:00 2001 From: Aaron Patterson Date: Tue, 10 Sep 2019 11:27:40 -0700 Subject: WB needs to be executed after object is reachable --- node.h | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'node.h') diff --git a/node.h b/node.h index d39cae86f2..6d4ee686f9 100644 --- a/node.h +++ b/node.h @@ -284,7 +284,12 @@ typedef struct RNode { #define NEW_DEFN(i,a,d,loc) NEW_NODE(NODE_DEFN,0,i,NEW_SCOPE(a,d,loc),loc) #define NEW_DEFS(r,i,a,d,loc) NEW_NODE(NODE_DEFS,r,i,NEW_SCOPE(a,d,loc),loc) -#define NEW_SCOPE(a,b,loc) NEW_NODE(NODE_SCOPE,local_tbl(p),b,a,loc) +#define NEW_SCOPE(a,b,loc) ({ \ + VALUE tbl = 0; \ + NODE * _n = NEW_NODE(NODE_SCOPE,local_tbl(p, &tbl),b,a,loc); \ + tbl && RB_OBJ_WRITTEN(p->ast, Qnil, tbl); \ + _n; \ +}) #define NEW_BLOCK(a,loc) NEW_NODE(NODE_BLOCK,a,0,0,loc) #define NEW_IF(c,t,e,loc) NEW_NODE(NODE_IF,c,t,e,loc) #define NEW_UNLESS(c,t,e,loc) NEW_NODE(NODE_UNLESS,c,t,e,loc) -- cgit v1.2.3