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) {