diff options
author | nagachika <nagachika@ruby-lang.org> | 2022-03-12 16:28:26 +0900 |
---|---|---|
committer | nagachika <nagachika@ruby-lang.org> | 2022-03-12 16:28:26 +0900 |
commit | f2d996dcff56057b48ae41ab6f23e7654848ea4b (patch) | |
tree | 83d22c17570ec3481edfd75d529a96f76498295b /test | |
parent | 09b27ec6a984ec1b660d5b7b48f2ff4d5a0065bc (diff) |
merge revision(s) d6c5a30cfdf658280338dbb8c8b17fab3190b928,a2d4e1cda68a49980a4f9f353f400efbde7e7884: [Backport #18392]
ObjectSpace::WeakMap#inspect: check if living object [Bug #18392]
---
gc.c | 29 +++++++++++++++++++++++------
test/ruby/test_weakmap.rb | 9 +++++++++
2 files changed, 32 insertions(+), 6 deletions(-)
Fixed the check order in wmap_live_p [Bug #18392]
Check if the object is a pointer to heap before check the flag in
that object.
---
gc.c | 35 ++++++++++++++++++++++-------------
1 file changed, 22 insertions(+), 13 deletions(-)
Diffstat (limited to 'test')
-rw-r--r-- | test/ruby/test_weakmap.rb | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/test/ruby/test_weakmap.rb b/test/ruby/test_weakmap.rb index 3b9eef770a..46d8b50c03 100644 --- a/test/ruby/test_weakmap.rb +++ b/test/ruby/test_weakmap.rb @@ -73,6 +73,15 @@ class TestWeakMap < Test::Unit::TestCase @wm.inspect) end + def test_inspect_garbage + 1000.times do |i| + @wm[i] = Object.new + @wm.inspect + end + assert_match(/\A\#<#{@wm.class.name}:[^:]++:(?:\s\d+\s=>\s\#<(?:Object|collected):[^:<>]*+>(?:,|>\z))+/, + @wm.inspect) + end + def test_each m = __callee__[/test_(.*)/, 1] x1 = Object.new |