aboutsummaryrefslogtreecommitdiffstats
path: root/node.h
diff options
context:
space:
mode:
authorAaron Patterson <tenderlove@ruby-lang.org>2019-09-10 11:27:40 -0700
committerAaron Patterson <tenderlove@ruby-lang.org>2019-09-10 12:42:35 -0700
commit139510238bcbb8d7fd8022c23a603c51d2acbe2e (patch)
treec7329e0a00ac14301b2c978864aa871a07c8b38d /node.h
parent721cab470606294e5b49ef75793a62becdf5cfb7 (diff)
downloadruby-139510238bcbb8d7fd8022c23a603c51d2acbe2e.tar.gz
WB needs to be executed after object is reachable
Diffstat (limited to 'node.h')
-rw-r--r--node.h7
1 files changed, 6 insertions, 1 deletions
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)