diff --git a/gc.c b/gc.c index ad67023321..157dfce495 100644 --- a/gc.c +++ b/gc.c @@ -6346,8 +6346,8 @@ wmap_inspect(VALUE self) TypedData_Get_Struct(self, struct weakmap, &weakmap_type, w); str = rb_sprintf("-<%"PRIsVALUE":%p", c, (void *)self); - if (w->obj2wmap) { - st_foreach(w->obj2wmap, wmap_inspect_i, str); + if (w->wmap2obj) { + st_foreach(w->wmap2obj, wmap_inspect_i, str); } RSTRING_PTR(str)[0] = '#'; rb_str_cat2(str, ">"); diff --git a/test/ruby/test_weakmap.rb b/test/ruby/test_weakmap.rb index c0d1747d2a..0f147a6b0f 100644 --- a/test/ruby/test_weakmap.rb +++ b/test/ruby/test_weakmap.rb @@ -28,6 +28,14 @@ class TestWeakMap < Test::Unit::TestCase alias test_member? test_include? alias test_key? test_include? + def test_inspect + x = Object.new + k = BasicObject.new + @wm[k] = x + assert_match(/\A\#<#{@wm.class.name}:[^:]+:\s\#\s=>\s\#>\z/, + @wm.inspect) + end + def test_each m = __callee__[/test_(.*)/, 1] x1 = Object.new