* proc.c (proc_mark): needs to mark the receiver too. a patch from

Chris Heath <chris AT heathens.co.nz> in [ruby-core:14983].
  [ruby-core:14885]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14995 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2008-01-11 11:20:18 +00:00
Родитель 7e6cf122ef
Коммит 857b3018dd
3 изменённых файлов: 14 добавлений и 0 удалений

Просмотреть файл

@ -1,3 +1,9 @@
Fri Jan 11 20:20:16 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
* proc.c (proc_mark): needs to mark the receiver too. a patch from
Chris Heath <chris AT heathens.co.nz> in [ruby-core:14983].
[ruby-core:14885]
Fri Jan 11 18:28:49 2008 Eric Hodel <drbrain@segment7.net>
* lib/rdoc/usage.rb: Removed.

Просмотреть файл

@ -253,3 +253,10 @@ assert_equal %q{3}, %q{
a + 2
}.call
}
assert_equal %q{ok}, %q{
class A; def get_block; proc {puts "ok"} end end
block = A.new.get_block
GC.start
block.call
}

1
proc.c
Просмотреть файл

@ -52,6 +52,7 @@ proc_mark(void *ptr)
RUBY_MARK_UNLESS_NULL(proc->blockprocval);
RUBY_MARK_UNLESS_NULL((VALUE)proc->special_cref_stack);
RUBY_MARK_UNLESS_NULL(proc->block.proc);
RUBY_MARK_UNLESS_NULL(proc->block.self);
if (proc->block.iseq && RUBY_VM_IFUNC_P(proc->block.iseq)) {
RUBY_MARK_UNLESS_NULL((VALUE)(proc->block.iseq));
}