1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

* io.c (pipe_open): handles leaked on win32 when an error occurs.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24090 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
usa 2009-07-13 13:33:00 +00:00
parent 76e3005431
commit 0fefd19023
2 changed files with 17 additions and 3 deletions

View file

@ -1,3 +1,7 @@
Mon Jul 13 22:28:03 2009 NAKAMURA Usaku <usa@ruby-lang.org>
* io.c (pipe_open): handles leaked on win32 when an error occurs.
Mon Jul 13 20:21:51 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
* marshal.c (r_object0): should not shadow outer variable not to

16
io.c
View file

@ -5034,9 +5034,19 @@ pipe_open(struct rb_exec_arg *eargp, VALUE prog, const char *modestr, int fmode,
rb_thread_sleep(1);
break;
default:
if (eargp)
rb_run_exec_options(&sarg, NULL);
rb_sys_fail(cmd);
{
int e = errno;
if (eargp)
rb_run_exec_options(&sarg, NULL);
close(pair[0]);
close(pair[1]);
if ((fmode & (FMODE_READABLE|FMODE_WRITABLE)) == (FMODE_READABLE|FMODE_WRITABLE)) {
close(write_pair[0]);
close(write_pair[1]);
}
errno = e;
rb_sys_fail(cmd);
}
break;
}
}