1
0
Fork 0
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:
akr 2015-03-08 13:52:51 +00:00
parent 5b06e83345
commit b6d5ce7975
3 changed files with 32 additions and 1 deletions

View file

@ -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

View file

@ -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;

View file

@ -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