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

ruby-changes:3590

From: ko1@a...
Date: Wed, 16 Jan 2008 18:03:29 +0900 (JST)
Subject: [ruby-changes:3590] nobu - Ruby:r15079 (trunk): * io.c (pipe_open, rb_io_s_popen): clear temporary object to release

nobu	2008-01-16 18:03:12 +0900 (Wed, 16 Jan 2008)

  New Revision: 15079

  Modified files:
    trunk/ChangeLog
    trunk/io.c

  Log:
    * io.c (pipe_open, rb_io_s_popen): clear temporary object to release
      and prevent from GC.


  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ChangeLog?r1=15079&r2=15078&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/io.c?r1=15079&r2=15078&diff_format=u

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 15078)
+++ ChangeLog	(revision 15079)
@@ -1,3 +1,8 @@
+Wed Jan 16 18:03:10 2008  Nobuyoshi Nakada  <nobu@r...>
+
+	* io.c (pipe_open, rb_io_s_popen): clear temporary object to release
+	  and prevent from GC.
+
 Wed Jan 16 17:55:07 2008  NAKAMURA Usaku  <usa@r...>
 
 	* numeric.c (fix_quo): typo. a patch from Shin-ichiro HARA
Index: io.c
===================================================================
--- io.c	(revision 15078)
+++ io.c	(revision 15079)
@@ -3626,6 +3626,7 @@
 	exename = cmd;
 	cmdbuf = rb_str_tmp_new(rb_w32_argv_size(args));
 	cmd = rb_w32_join_argv(RSTRING_PTR(cmdbuf), args);
+	rb_str_resize(argbuf, 0);
     }
     while ((pid = rb_w32_pipe_exec(cmd, exename, openmode, &fd, &write_fd)) == -1) {
 	/* exec failed */
@@ -3775,6 +3776,7 @@
 	tmp = rb_ary_dup(tmp);
 	RBASIC(tmp)->klass = 0;
 	port = pipe_open_v(RARRAY_LEN(tmp), RARRAY_PTR(tmp), mode);
+	rb_ary_clear(tmp);
     }
     else {
 	SafeStringValue(pname);

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

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