зеркало из https://github.com/github/ruby.git
* gc.c (free_method_entry_i): method entry may be in
unlinked_method_entry_list. [ruby-core:43383][Bug #6171] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35080 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
Родитель
7e78f6f526
Коммит
2555f3f5bf
|
@ -1,3 +1,8 @@
|
|||
Sun Mar 18 17:17:36 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||
|
||||
* gc.c (free_method_entry_i): method entry may be in
|
||||
unlinked_method_entry_list. [ruby-core:43383][Bug #6171]
|
||||
|
||||
Sun Mar 18 15:27:31 2012 Tanaka Akira <akr@fsij.org>
|
||||
|
||||
* compile.c: typo fix by Run Paint Run Run.
|
||||
|
|
4
gc.c
4
gc.c
|
@ -1709,7 +1709,9 @@ mark_m_tbl(rb_objspace_t *objspace, st_table *tbl, int lev)
|
|||
static int
|
||||
free_method_entry_i(ID key, rb_method_entry_t *me, st_data_t data)
|
||||
{
|
||||
rb_free_method_entry(me);
|
||||
if (!me->mark) {
|
||||
rb_free_method_entry(me);
|
||||
}
|
||||
return ST_CONTINUE;
|
||||
}
|
||||
|
||||
|
|
|
@ -461,4 +461,16 @@ class TestMethod < Test::Unit::TestCase
|
|||
assert_nothing_raised { v.instance_eval { mv2 } }
|
||||
assert_nothing_raised { v.instance_eval { mv3 } }
|
||||
end
|
||||
|
||||
def test_bound_method_entry
|
||||
bug6171 = '[ruby-core:43383]'
|
||||
assert_ruby_status([], <<-EOC, bug6171)
|
||||
class Bug6171
|
||||
def initialize(target)
|
||||
define_singleton_method(:reverse, target.method(:reverse).to_proc)
|
||||
end
|
||||
end
|
||||
1000.times {p = Bug6171.new('test'); 10000.times {p.reverse}}
|
||||
EOC
|
||||
end
|
||||
end
|
||||
|
|
Загрузка…
Ссылка в новой задаче