summaryrefslogtreecommitdiff
path: root/ext/zlib/zlib.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/zlib/zlib.c')
-rw-r--r--ext/zlib/zlib.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/ext/zlib/zlib.c b/ext/zlib/zlib.c
index 8f24b77d8f..9c2b7b624f 100644
--- a/ext/zlib/zlib.c
+++ b/ext/zlib/zlib.c
@@ -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;