aboutsummaryrefslogtreecommitdiffstats
path: root/parse.y
diff options
context:
space:
mode:
authorNobuyoshi Nakada <nobu@ruby-lang.org>2023-12-02 02:29:36 +0900
committerNobuyoshi Nakada <nobu@ruby-lang.org>2023-12-02 03:57:41 +0900
commita607d62d8c5786087916413c369dbde0c62db573 (patch)
treeade98fe4de166625adf6fd871ef343f98eb8238f /parse.y
parentec83bd7356d639fe34f6843c4f1805c63cfdfa49 (diff)
downloadruby-a607d62d8c5786087916413c369dbde0c62db573.tar.gz
[Bug #20033] Dynamic regexp should not assign captures
Diffstat (limited to 'parse.y')
-rw-r--r--parse.y4
1 files changed, 2 insertions, 2 deletions
diff --git a/parse.y b/parse.y
index 6931df9c1d..34c9152bea 100644
--- a/parse.y
+++ b/parse.y
@@ -12905,8 +12905,8 @@ new_regexp(struct parser_params *p, NODE *node, int options, const YYLTYPE *loc)
}
if (!RNODE_DREGX(node)->nd_next) {
VALUE src = RNODE_DREGX(node)->nd_lit;
- nd_set_type(node, NODE_LIT);
- RB_OBJ_WRITTEN(p->ast, Qnil, RNODE_LIT(node)->nd_lit = reg_compile(p, src, options));
+ VALUE re = reg_compile(p, src, options);
+ RB_OBJ_WRITTEN(p->ast, Qnil, RNODE_DREGX(node)->nd_lit = re);
}
if (options & RE_OPTION_ONCE) {
node = NEW_ONCE(node, loc);