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

ruby-changes:50448

From: k0kubun <ko1@a...>
Date: Sun, 25 Feb 2018 11:12:32 +0900 (JST)
Subject: [ruby-changes:50448] k0kubun:r62570 (trunk): process.c: guard eargp against GC

k0kubun	2018-02-25 11:12:25 +0900 (Sun, 25 Feb 2018)

  New Revision: 62570

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

  Log:
    process.c: guard eargp against GC
    
    `rb_str_append` may trigger GC, and in that case eargp might be GCed.
    Probably for protecting it, `RB_GC_GUARD(execarg_obj)` can be seen in
    other places.
    
    Hoping to fix:
    http://ci.rvm.jp/results/trunk_gcc5@silicon-docker/569818

  Modified files:
    trunk/process.c
Index: process.c
===================================================================
--- process.c	(revision 62569)
+++ process.c	(revision 62570)
@@ -4111,6 +4111,7 @@ rb_f_system(int argc, VALUE *argv) https://github.com/ruby/ruby/blob/trunk/process.c#L4111
         rb_str_cat_cstr(pst_message_status(str, status), ": ");
         rb_str_append(str, eargp->invoke.sh.shell_script);
         rb_exc_raise(rb_exc_new_str(rb_eRuntimeError, str));
+        RB_GC_GUARD(execarg_obj);
     }
     else {
         return Qfalse;

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

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