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/