From 2c7d3b3a722c4636ab1e9d289cbca47ddd168d3e Mon Sep 17 00:00:00 2001 From: Yusuke Endoh Date: Mon, 26 Apr 2021 18:11:46 +0900 Subject: node.c (rb_ast_new): imemo_ast is WB-unprotected Previously imemo_ast was handled as WB-protected which caused a segfault of the following code: # shareable_constant_value: literal M0 = {} M1 = {} ... M100000 = {} My analysis is here: `shareable_constant_value: literal` creates many Hash instances during parsing, and add them to node_buffer of imemo_ast. However, the contents are missed because imemo_ast is incorrectly WB-protected. This changeset makes imemo_ast as WB-unprotected. --- node.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'node.c') diff --git a/node.c b/node.c index bef9d7bcbd..2392d5b8d1 100644 --- a/node.c +++ b/node.c @@ -1299,7 +1299,7 @@ rb_ast_t * rb_ast_new(void) { node_buffer_t *nb = rb_node_buffer_new(); - rb_ast_t *ast = (rb_ast_t *)rb_imemo_new(imemo_ast, 0, 0, 0, (VALUE)nb); + rb_ast_t *ast = rb_imemo_ast_new((VALUE)nb); return ast; } -- cgit v1.2.1