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

ruby-changes:39886

From: nobu <ko1@a...>
Date: Tue, 29 Sep 2015 02:30:35 +0900 (JST)
Subject: [ruby-changes:39886] nobu:r51967 (trunk): proc.c: fix GC guard location

nobu	2015-09-29 02:30:09 +0900 (Tue, 29 Sep 2015)

  New Revision: 51967

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=51967

  Log:
    proc.c: fix GC guard location
    
    * proc.c (proc_call): fix GC guard location after the use of its
      content.

  Modified files:
    trunk/proc.c
Index: proc.c
===================================================================
--- proc.c	(revision 51966)
+++ proc.c	(revision 51967)
@@ -738,7 +738,7 @@ proc_call(int argc, VALUE *argv, VALUE p https://github.com/ruby/ruby/blob/trunk/proc.c#L738
     if (RUBY_VM_IFUNC_P(iseq) || iseq->body->param.flags.has_block) {
 	if (rb_block_given_p()) {
 	    rb_proc_t *passed_proc;
-	    RB_GC_GUARD(passed_procval) = rb_block_proc();
+	    passed_procval = rb_block_proc();
 	    GetProcPtr(passed_procval, passed_proc);
 	    blockptr = &passed_proc->block;
 	}
@@ -746,6 +746,7 @@ proc_call(int argc, VALUE *argv, VALUE p https://github.com/ruby/ruby/blob/trunk/proc.c#L746
 
     vret = rb_vm_invoke_proc(GET_THREAD(), proc, argc, argv, blockptr);
     RB_GC_GUARD(procval);
+    RB_GC_GUARD(passed_procval);
     return vret;
 }
 

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

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