mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* ext/zlib/zlib.c (rb_gzfile_close): Don't raise on double
close for consistent to IO#close. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49893 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
5b06e83345
commit
b6d5ce7975
3 changed files with 32 additions and 1 deletions
|
@ -1,3 +1,8 @@
|
|||
Sun Mar 8 22:50:57 2015 Tanaka Akira <akr@fsij.org>
|
||||
|
||||
* ext/zlib/zlib.c (rb_gzfile_close): Don't raise on double
|
||||
close for consistent to IO#close.
|
||||
|
||||
Sun Mar 8 16:57:35 2015 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||
|
||||
* dir.c (glob_helper): match patterns against legacy short names
|
||||
|
|
|
@ -3297,9 +3297,13 @@ rb_gzfile_set_comment(VALUE obj, VALUE str)
|
|||
static VALUE
|
||||
rb_gzfile_close(VALUE obj)
|
||||
{
|
||||
struct gzfile *gz = get_gzfile(obj);
|
||||
struct gzfile *gz;
|
||||
VALUE io;
|
||||
|
||||
TypedData_Get_Struct(obj, struct gzfile, &gzfile_data_type, gz);
|
||||
if (!ZSTREAM_IS_READY(&gz->z)) {
|
||||
return Qnil;
|
||||
}
|
||||
io = gz->io;
|
||||
gzfile_close(gz, 1);
|
||||
return io;
|
||||
|
|
|
@ -962,6 +962,19 @@ if defined? Zlib
|
|||
assert_equal(content, read_size)
|
||||
}
|
||||
end
|
||||
|
||||
def test_double_close
|
||||
Tempfile.create("test_zlib_gzip_reader_close") {|t|
|
||||
t.binmode
|
||||
content = "foo"
|
||||
Zlib::GzipWriter.wrap(t) {|gz| gz.print(content) }
|
||||
r = Zlib::GzipReader.open(t.path)
|
||||
assert_equal(content, r.read)
|
||||
assert_nothing_raised { r.close }
|
||||
assert_nothing_raised { r.close }
|
||||
}
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
class TestZlibGzipWriter < Test::Unit::TestCase
|
||||
|
@ -1022,6 +1035,15 @@ if defined? Zlib
|
|||
assert_equal("foo", Zlib::GzipReader.open(t.path) {|gz| gz.read })
|
||||
}
|
||||
end
|
||||
|
||||
def test_double_close
|
||||
Tempfile.create("test_zlib_gzip_reader_close") {|t|
|
||||
t.binmode
|
||||
w = Zlib::GzipWriter.wrap(t)
|
||||
assert_nothing_raised { w.close }
|
||||
assert_nothing_raised { w.close }
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
class TestZlib < Test::Unit::TestCase
|
||||
|
|
Loading…
Reference in a new issue