summaryrefslogtreecommitdiff
path: root/ext/zlib/zlib.c
diff options
context:
space:
mode:
authorNobuyoshi Nakada <nobu@ruby-lang.org>2019-09-29 18:52:31 +0900
committerNobuyoshi Nakada <nobu@ruby-lang.org>2019-09-29 18:53:11 +0900
commit94db8cda9b4eeee4736d089570a343fdf5ef86c0 (patch)
tree4b8eadcb76bad8113d13507f6c3c678e85881701 /ext/zlib/zlib.c
parentf10c9cb1f2dfca024937bc48137168124d8511aa (diff)
[ruby/zlib] Fix for older ruby 2.6 or earlier
https://github.com/ruby/zlib/commit/00ead8cb2c
Diffstat (limited to 'ext/zlib/zlib.c')
-rw-r--r--ext/zlib/zlib.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/ext/zlib/zlib.c b/ext/zlib/zlib.c
index 22b4d0fb8d..3953a5ba04 100644
--- a/ext/zlib/zlib.c
+++ b/ext/zlib/zlib.c
@@ -27,6 +27,10 @@
#define RUBY_ZLIB_VERSION "1.0.0"
+#ifndef RB_PASS_CALLED_KEYWORDS
+# define rb_class_new_instance_kw(argc, argv, klass, kw_splat) rb_class_new_instance(argc, argv, klass)
+#endif
+
#ifndef GZIP_SUPPORT
#define GZIP_SUPPORT 1
#endif
@@ -1061,9 +1065,14 @@ zstream_run(struct zstream *z, Bytef *src, long len, int flush)
}
loop:
+#ifndef RB_NOGVL_UBF_ASYNC_SAFE
+ err = (int)(VALUE)rb_thread_call_without_gvl(zstream_run_func, (void *)&args,
+ zstream_unblock_func, (void *)&args);
+#else
err = (int)(VALUE)rb_nogvl(zstream_run_func, (void *)&args,
zstream_unblock_func, (void *)&args,
RB_NOGVL_UBF_ASYNC_SAFE);
+#endif
if (flush != Z_FINISH && err == Z_BUF_ERROR
&& z->stream.avail_out > 0) {