summaryrefslogtreecommitdiff
path: root/ext/zlib
diff options
context:
space:
mode:
Diffstat (limited to 'ext/zlib')
-rw-r--r--ext/zlib/zlib.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/ext/zlib/zlib.c b/ext/zlib/zlib.c
index 2d938199b3..23466d1c94 100644
--- a/ext/zlib/zlib.c
+++ b/ext/zlib/zlib.c
@@ -4277,13 +4277,19 @@ rb_gzreader_external_encoding(VALUE self)
}
static VALUE
-zlib_gzip_ensure(VALUE arg)
+zlib_gzip_end_rescue(VALUE arg)
{
struct gzfile *gz = (struct gzfile *)arg;
- rb_rescue((VALUE(*)())gz->end, arg, NULL, Qnil);
+ gz->end(gz);
return Qnil;
}
+static VALUE
+zlib_gzip_ensure(VALUE arg)
+{
+ return rb_rescue(zlib_gzip_end_rescue, arg, NULL, Qnil);
+}
+
static void
zlib_gzip_end(struct gzfile *gz)
{