Project

General

Profile

Bug #6010

open-uri not checking if io is closed

Added by jordimassaguerpla (Jordi Massaguer Pla) over 7 years ago. Updated over 5 years ago.

Status:
Closed
Priority:
Normal
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

Associated revisions

Revision 0c3d5131
Added by akr (Akira Tanaka) over 5 years ago

  • 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]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45835 b2dd03c8-39d4-4d8f-98ff-823fe69b080e

Revision 45835
Added by akr (Akira Tanaka) over 5 years ago

  • 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]

Revision 45835
Added by akr (Akira Tanaka) over 5 years ago

  • 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]

Revision 45835
Added by akr (Akira Tanaka) over 5 years ago

  • 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]

Revision 45835
Added by akr (Akira Tanaka) over 5 years ago

  • 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]

Revision 45835
Added by akr (Akira Tanaka) over 5 years ago

  • 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]

Revision 45835
Added by akr (Akira Tanaka) over 5 years ago

  • 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]

History

Updated by akr (Akira Tanaka) over 5 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]

Also available in: Atom PDF