mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
rubygems/util.rb: fix Gem::Util.popen
* lib/rubygems/util.rb (Gem::Util.popen): should close open pipe to reap the child process, in 1.9 or later. fix deadlock on waiting the child process whose output is bigger than pipe buffer, in 1.8. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43724 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
4528d7e0cf
commit
11d2b16cfb
1 changed files with 6 additions and 5 deletions
|
@ -41,7 +41,7 @@ module Gem::Util
|
|||
|
||||
def self.popen *command
|
||||
begin
|
||||
r, = IO.popen command
|
||||
r, = IO.popen command, &:read
|
||||
rescue TypeError # ruby 1.8 only supports string command
|
||||
r, w = IO.pipe
|
||||
|
||||
|
@ -54,12 +54,13 @@ module Gem::Util
|
|||
|
||||
w.close
|
||||
|
||||
Process.wait pid
|
||||
|
||||
r
|
||||
begin
|
||||
return r.read
|
||||
ensure
|
||||
Process.wait pid
|
||||
end
|
||||
end
|
||||
|
||||
r.read
|
||||
end
|
||||
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue