Project

General

Profile

Actions

Bug #20341

closed

Parser segfault with shareable constant with array of more than 1 element

Added by kddnewton (Kevin Newton) 3 months ago. Updated 3 months ago.

Status:
Closed
Assignee:
-
Target version:
-
[ruby-core:117197]

Description

# shareable_constant_value: literal
C = [foo, bar]

results in

./ruby: [BUG] unexpected node: NODE_LIT
Actions #1

Updated by yui-knk (Kaneko Yuichiro) 3 months ago

  • Status changed from Open to Closed

Applied in changeset git|8ba4d7d75fd231b61727eb0561eb686c1d67bfd4.


Fix unexpected node bug for shareable_constant_value: literal

[Bug #20339]
[Bug #20341]

const_decl_path changes the value of NODE **dest, LHS of an assignment,
with NODE_LIT created by const_decl_path. shareable_literal_constant calls
const_decl_path via ensure_shareable_node multiple times if RHS of an assignment
is array or hash. This means NODE **dest argument of const_decl_path can be NODE_LIT
from the second time then causes [BUG] unexpected node: NODE_LIT in
rb_node_const_decl_val.
This commit change to not update NODE **dest in const_decl_path to
fix the issue.

Actions

Also available in: Atom PDF

Like0
Like0