diff options
| author | NARUSE, Yui <naruse@airemix.jp> | 2023-03-23 08:11:23 +0900 |
|---|---|---|
| committer | NARUSE, Yui <naruse@airemix.jp> | 2023-03-23 08:11:23 +0900 |
| commit | 400ccb16eefe4e21c4e3eacab4fd0f208fc5e151 (patch) | |
| tree | 020e8dbf831e7f4bb7900c7d212a06c978178738 /version.h | |
| parent | ad6fe84dfa6935bd6e2c3ef3ee36bed4e8627d0b (diff) | |
merge revision(s) cb22d78354e201ca74eba68a8b4edefb593e6754: [Backport #19536]
Fix frozen status loss when moving objects
[Bug #19536]
When objects are moved between size pools, their frozen status is lost
in the shape. This will cause the frozen check to be bypassed when there
is an inline cache. For example, the following script should raise a
FrozenError, but doesn't on Ruby 3.2 and master.
class A
def add_ivars
@a = @b = @c = @d = 1
end
def set_a
@a = 10
end
end
a = A.new
a.add_ivars
a.freeze
b = A.new
b.add_ivars
b.set_a # Set the inline cache in set_a
GC.verify_compaction_references(expand_heap: true, toward: :empty)
a.set_a
---
shape.c | 2 +-
test/ruby/test_gc_compact.rb | 28 ++++++++++++++++++++++++++++
2 files changed, 29 insertions(+), 1 deletion(-)
Diffstat (limited to 'version.h')
| -rw-r--r-- | version.h | 2 |
1 files changed, 1 insertions, 1 deletions
@@ -11,7 +11,7 @@ # define RUBY_VERSION_MINOR RUBY_API_VERSION_MINOR #define RUBY_VERSION_TEENY 1 #define RUBY_RELEASE_DATE RUBY_RELEASE_YEAR_STR"-"RUBY_RELEASE_MONTH_STR"-"RUBY_RELEASE_DAY_STR -#define RUBY_PATCHLEVEL 45 +#define RUBY_PATCHLEVEL 46 #include "ruby/version.h" #include "ruby/internal/abi.h" |
