[前][次][番号順一覧][スレッド一覧]

ruby-changes:3517

From: ko1@a...
Date: Sun, 13 Jan 2008 15:37:04 +0900 (JST)
Subject: [ruby-changes:3517] nobu - Ruby:r14995 (trunk): * proc.c (proc_mark): needs to mark the receiver too. a patch from

nobu	2008-01-11 20:20:18 +0900 (Fri, 11 Jan 2008)

  New Revision: 14995

  Modified files:
    trunk/ChangeLog
    trunk/bootstraptest/test_proc.rb
    trunk/proc.c

  Log:
    * 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]


  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ChangeLog?r1=14995&r2=14994&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/bootstraptest/test_proc.rb?r1=14995&r2=14994&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/proc.c?r1=14995&r2=14994&diff_format=u

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 14994)
+++ ChangeLog	(revision 14995)
@@ -1,3 +1,9 @@
+Fri Jan 11 20:20:16 2008  Nobuyoshi Nakada  <nobu@r...>
+
+	* 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@s...>
 
 	* lib/rdoc/usage.rb: Removed.
Index: bootstraptest/test_proc.rb
===================================================================
--- bootstraptest/test_proc.rb	(revision 14994)
+++ bootstraptest/test_proc.rb	(revision 14995)
@@ -253,3 +253,10 @@
     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
+}
Index: proc.c
===================================================================
--- proc.c	(revision 14994)
+++ proc.c	(revision 14995)
@@ -52,6 +52,7 @@
 	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));
 	}

--
ML: ruby-changes@q...
Info: 

[前][次][番号順一覧][スレッド一覧]