[#47562] [Backport 200 - Backport #8716][Open] segmation fault 正規表現で大量のグループを利用時 — "taka-yoshi (taka-yoshi taka)" <smokeonthewater222@...>

15 messages 2013/08/01

[#47569] [ruby-trunk - Feature #8726][Open] Class#source_location — "takiuchi (Genki Takiuchi)" <genki@...21g.com>

14 messages 2013/08/03

[#47663] Re: [ruby-core:56878] [ruby-trunk - misc #8835][Open] Introducing a semantic versioning scheme and branching policy — "Akinori MUSHA" <knu@...>

At Fri, 30 Aug 2013 21:49:34 +0900,

6 messages 2013/08/30

[ruby-dev:47649] Re: [ruby-changes:30564] akr:r42643 (trunk): * process.c (rb_proc_times): Use RB_GC_GUARD to guard objects from GC.

From: SASADA Koichi <ko1@...>
Date: 2013-08-21 12:19:32 UTC
List: ruby-dev #47649
akr さん

この RB_GC_GUARD って要ります? rb_struct_new() に VALUE を渡した後、使
わないように思うのですが。


(2013/08/21 21:05), akr wrote:
> akr	2013-08-21 21:05:29 +0900 (Wed, 21 Aug 2013)
> 
>   New Revision: 42643
> 
>   http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=42643
> 
>   Log:
>     * process.c (rb_proc_times): Use RB_GC_GUARD to guard objects from GC.
> 
>   Modified files:
>     trunk/ChangeLog
>     trunk/process.c
> Index: ChangeLog
> ===================================================================
> --- ChangeLog	(revision 42642)
> +++ ChangeLog	(revision 42643)
> @@ -1,3 +1,7 @@ https://github.com/ruby/ruby/blob/trunk/ChangeLog#L1
> +Wed Aug 21 21:02:37 2013  Tanaka Akira  <akr@fsij.org>
> +
> +	* process.c (rb_proc_times): Use RB_GC_GUARD to guard objects from GC.
> +
>  Wed Aug 21 20:33:01 2013  Tanaka Akira  <akr@fsij.org>
>  
>  	* process.c (get_clk_tck): Extracted from rb_proc_times.
> Index: process.c
> ===================================================================
> --- process.c	(revision 42642)
> +++ process.c	(revision 42643)
> @@ -6641,14 +6641,19 @@ rb_proc_times(VALUE obj) https://github.com/ruby/ruby/blob/trunk/process.c#L6641
>  {
>      const double hertz = get_clk_tck();
>      struct tms buf;
> -    volatile VALUE utime, stime, cutime, sctime;
> +    VALUE utime, stime, cutime, cstime, ret;
>  
>      times(&buf);
> -    return rb_struct_new(rb_cProcessTms,
> -			 utime = DBL2NUM(buf.tms_utime / hertz),
> -			 stime = DBL2NUM(buf.tms_stime / hertz),
> -			 cutime = DBL2NUM(buf.tms_cutime / hertz),
> -			 sctime = DBL2NUM(buf.tms_cstime / hertz));
> +    utime = DBL2NUM(buf.tms_utime / hertz);
> +    stime = DBL2NUM(buf.tms_stime / hertz);
> +    cutime = DBL2NUM(buf.tms_cutime / hertz);
> +    cstime = DBL2NUM(buf.tms_cstime / hertz);
> +    ret = rb_struct_new(rb_cProcessTms, utime, stime, cutime, cstime);
> +    RB_GC_GUARD(utime);
> +    RB_GC_GUARD(stime);
> +    RB_GC_GUARD(cutime);
> +    RB_GC_GUARD(cstime);
> +    return ret;
>  }
>  #else
>  #define rb_proc_times rb_f_notimplement
> 
> --
> ML: ruby-changes@quickml.atdot.net
> Info: http://www.atdot.net/~ko1/quickml/
> 


-- 
// SASADA Koichi at atdot dot net

In This Thread

Prev Next