diff options
author | Jean Boussier <jean.boussier@gmail.com> | 2020-06-18 16:01:36 +0200 |
---|---|---|
committer | Aaron Patterson <aaron.patterson@gmail.com> | 2020-06-18 10:00:20 -0700 |
commit | adbdf11f94afd52d276c7891515e0eb808f6003f (patch) | |
tree | 9c541b9a5c970318a7515d382f1e162509e9d114 /lib | |
parent | 42b4234ba486d4613f0e8b7c9e67bc37d511fa37 (diff) | |
download | ruby-adbdf11f94afd52d276c7891515e0eb808f6003f.tar.gz |
[open3] only close streams if a block is passed
Ref: 5429deb075beb9a2b67adae269bbac16325876d1
The previous change totally borke `popen2e` in this usage:
```ruby
require 'open3'
stdin, stdout, process = Open3.popen2e("cat")
puts stdout.read
```
Diffstat (limited to 'lib')
-rw-r--r-- | lib/open3.rb | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/lib/open3.rb b/lib/open3.rb index ada451c249..3ee81c30ac 100644 --- a/lib/open3.rb +++ b/lib/open3.rb @@ -207,10 +207,12 @@ module Open3 popen_run(cmd, opts, [in_r, out_w], [in_w, out_r], &block) ensure - in_r.close - in_w.close - out_r.close - out_w.close + if block + in_r.close + in_w.close + out_r.close + out_w.close + end end module_function :popen2e |