Actions
Bug #19339
closedDefining ivar on special constants with @ syntax causes segv
Description
1.instance_eval do
@a = 1
end
There's a missing check at the top of vm_setivar_fastpath, should be:
if (UNLIKELY(RB_SPECIAL_CONST_P(obj))) { // example code: 1.instance_eval { @a = 1 }
rb_check_frozen(obj); // raise FrozenError, because it's always frozen
return Qundef;
}
Updated by peterzhu2118 (Peter Zhu) almost 2 years ago
- Backport changed from 2.7: UNKNOWN, 3.0: UNKNOWN, 3.1: UNKNOWN, 3.2: UNKNOWN to 2.7: DONTNEED, 3.0: DONTNEED, 3.1: DONTNEED, 3.2: REQUIRED
Thank you for reporting this bug. I opened a PR with the fix here: https://github.com/ruby/ruby/pull/7129
Updated by peterzhu2118 (Peter Zhu) almost 2 years ago
- Status changed from Open to Closed
Applied in changeset git|ed6fbb79e19bf401db0e85447fee955fd10a25c7.
Fix crash when defining ivars on special constants
[Bug #19339]
Updated by naruse (Yui NARUSE) almost 2 years ago
- Backport changed from 2.7: DONTNEED, 3.0: DONTNEED, 3.1: DONTNEED, 3.2: REQUIRED to 2.7: DONTNEED, 3.0: DONTNEED, 3.1: DONTNEED, 3.2: DONE
ruby_3_2 c0df0a85dec77a09308caddb1e1efd4d38fbf7b8 merged revision(s) ed6fbb79e19bf401db0e85447fee955fd10a25c7.
Actions
Like0
Like0Like0Like0