Project

General

Profile

Actions

Bug #6010

closed

open-uri not checking if io is closed

Added by jordimassaguerpla (Jordi Massaguer Pla) about 12 years ago. Updated almost 10 years ago.

Status:
Closed
Assignee:
-
Target version:
ruby -v:
ruby 1.8.7 (2011-12-28 patchlevel 357) [x86_64-linux]
[ruby-core:42538]

Description

Here is how to reproduce the bug:

The following code works:

open "http://rubygems.org/gems/curb-0.8.0.gem", "rb" do |io|
Gem::Package.open io, 'r', nil do |pkg|
end
end

The following code raises an exception:

open "http://rubygems.org/gems/factory_girl_rails-1.2.0.gem", "rb" do |io|
Gem::Package.open io, 'r', nil do |pkg|
end
end

IOError: closed stream
from /usr/lib64/ruby/1.8/open-uri.rb:137:in close' from /usr/lib64/ruby/1.8/open-uri.rb:137:in open_uri'
from /usr/lib64/ruby/1.8/open-uri.rb:518:in open' from /usr/lib64/ruby/1.8/open-uri.rb:30:in open'
from (irb):74
from :0

This is the patch that will make this work:

--- /usr/lib64/ruby/1.8/open-uri.rb 2012-02-06 12:30:39.173000026 +0100
+++ /usr/lib64/ruby/1.8/open-uri.rb.patched 2012-02-06 12:33:33.552000027 +0100
@@ -134,7 +134,7 @@
begin
yield io
ensure

  •    io.close 
    
  •    io.close if io && !io.closed?
     end
    
    else
    io

Updated by akr (Akira Tanaka) almost 10 years ago

  • Status changed from Open to Closed
  • % Done changed from 0 to 100

Applied in changeset ruby-trunk:r45835.


  • lib/open-uri.rb (OpenURI.open_uri): Call StringIO#close only if
    the StringIO object is not closed yet.
    Reported by Jordi Massaguer Pla. [ruby-core:42538] [Bug #6010]
Actions

Also available in: Atom PDF

Like0
Like0