zlib 2.0.0 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8d957237b697d574370dfb66644eb7912b53f2466929d8ff3ce8690105c99352
4
- data.tar.gz: 0e12da7b6b66a599f03288bddbed187ee5c565dc5a21934576b23a6248014e42
3
+ metadata.gz: d8f0f4c2a4ba8053045fbe977bc5cf5ab6a8d1142d2d6ad7bc80cdbaa8e86da5
4
+ data.tar.gz: 67b0d3fb3d2bcd309e6e55298aff6df2a136135a56822b6c057d8236aaa2766c
5
5
  SHA512:
6
- metadata.gz: 32b7d6ac7abb5e69c8d9d5dcdf0e9da27147cae4c54e56b147f58174dc44527d17b257faeae348d491aa7e30ef335fb3037a2aacf09989570a3761c74971f35d
7
- data.tar.gz: fca7f4d887d1a97fa39ba4a973dfa1785822926df17d309646b97991ecb8d3ea1d6f18607ad5827f3b6fa55ae64715b88dfda5fb81b0385405bbd20451174d98
6
+ metadata.gz: 50bf8adea4a39c751f12c6a13c967d3792cf27f5636eb4b1228501a427d9b1b377fd4757c54a4806979631501ee4833dacc9f31a0a41d1aa448138d244911b6d
7
+ data.tar.gz: e8e442a205ba16f584a6ac43cf8fa0f5abddfa59e8f6eca007fc5691ec7b82801198461391e3e79866a8d4d38a57f1031ec918a61ccb81aabb94aa35bf544675
data/ext/zlib/extconf.rb CHANGED
@@ -10,11 +10,12 @@ require 'rbconfig'
10
10
 
11
11
  dir_config 'zlib'
12
12
 
13
-
13
+ libs = $libs
14
14
  if %w'z libz zlib1 zlib zdll zlibwapi'.find {|z| have_library(z, 'deflateReset')} and
15
15
  have_header('zlib.h') then
16
16
  have_zlib = true
17
17
  else
18
+ $libs = libs
18
19
  unless File.directory?(zsrc = "#{$srcdir}/zlib")
19
20
  dirs = Dir.open($srcdir) {|z| z.grep(/\Azlib-\d+[.\d]*\z/) {|x|"#{$srcdir}/#{x}"}}
20
21
  dirs.delete_if {|x| !File.directory?(x)}
@@ -46,7 +47,7 @@ else
46
47
  end
47
48
  m = File.read(m)
48
49
  zimplib = m[/^IMPLIB[ \t]*=[ \t]*(\S+)/, 1]
49
- $LOCAL_LIBS << " " << zimplib
50
+ ($LOCAL_LIBS << " ./" << zimplib).strip!
50
51
  unless $nmake or /^TOP[ \t]/ =~ m
51
52
  m.gsub!(/win32\/zlib\.def/, '$(TOP)/\&')
52
53
  m.gsub!(/^(\t.*[ \t])(\S+\.rc)/, '\1-I$(<D) $<')
@@ -62,7 +63,7 @@ else
62
63
  "$(TARGET_SO): $(ZIMPLIB)\n",
63
64
  "$(ZIMPLIB):\n",
64
65
  "#{zmk} $(ZOPTS) $@\n",
65
- "install-so: $(topdir)/#{dll}",
66
+ "install-so static: $(topdir)/#{dll}",
66
67
  "$(topdir)/#{dll}: $(ZIMPLIB)\n",
67
68
  "\t$(Q) $(COPY) #{dll} $(@D)\n",
68
69
  "clean: clean-zsrc\n",
data/ext/zlib/zlib.c CHANGED
@@ -25,7 +25,7 @@
25
25
  # define VALGRIND_MAKE_MEM_UNDEFINED(p, n) 0
26
26
  #endif
27
27
 
28
- #define RUBY_ZLIB_VERSION "2.0.0"
28
+ #define RUBY_ZLIB_VERSION "2.1.0"
29
29
 
30
30
  #ifndef RB_PASS_CALLED_KEYWORDS
31
31
  # define rb_class_new_instance_kw(argc, argv, klass, kw_splat) rb_class_new_instance(argc, argv, klass)
@@ -354,7 +354,9 @@ raise_zlib_error(int err, const char *msg)
354
354
  static void
355
355
  finalizer_warn(const char *msg)
356
356
  {
357
+ #if 0
357
358
  fprintf(stderr, "zlib(finalizer): %s\n", msg);
359
+ #endif
358
360
  }
359
361
 
360
362
 
@@ -546,6 +548,7 @@ struct zstream {
546
548
  unsigned long flags;
547
549
  VALUE buf;
548
550
  VALUE input;
551
+ VALUE mutex;
549
552
  z_stream stream;
550
553
  const struct zstream_funcs {
551
554
  int (*reset)(z_streamp);
@@ -621,6 +624,7 @@ zstream_init(struct zstream *z, const struct zstream_funcs *func)
621
624
  z->flags = 0;
622
625
  z->buf = Qnil;
623
626
  z->input = Qnil;
627
+ z->mutex = rb_mutex_new();
624
628
  z->stream.zalloc = zlib_mem_alloc;
625
629
  z->stream.zfree = zlib_mem_free;
626
630
  z->stream.opaque = Z_NULL;
@@ -652,7 +656,9 @@ zstream_expand_buffer(struct zstream *z)
652
656
  rb_obj_reveal(z->buf, rb_cString);
653
657
  }
654
658
 
659
+ rb_mutex_unlock(z->mutex);
655
660
  rb_protect(rb_yield, z->buf, &state);
661
+ rb_mutex_lock(z->mutex);
656
662
 
657
663
  if (ZSTREAM_REUSE_BUFFER_P(z)) {
658
664
  rb_str_modify(z->buf);
@@ -1054,7 +1060,7 @@ zstream_unblock_func(void *ptr)
1054
1060
  }
1055
1061
 
1056
1062
  static void
1057
- zstream_run(struct zstream *z, Bytef *src, long len, int flush)
1063
+ zstream_run0(struct zstream *z, Bytef *src, long len, int flush)
1058
1064
  {
1059
1065
  struct zstream_run_args args;
1060
1066
  int err;
@@ -1095,6 +1101,12 @@ loop:
1095
1101
  RB_NOGVL_UBF_ASYNC_SAFE);
1096
1102
  #endif
1097
1103
 
1104
+ /* retry if no exception is thrown */
1105
+ if (err == Z_OK && args.interrupt) {
1106
+ args.interrupt = 0;
1107
+ goto loop;
1108
+ }
1109
+
1098
1110
  if (flush != Z_FINISH && err == Z_BUF_ERROR
1099
1111
  && z->stream.avail_out > 0) {
1100
1112
  z->flags |= ZSTREAM_FLAG_IN_STREAM;
@@ -1132,6 +1144,32 @@ loop:
1132
1144
  rb_jump_tag(args.jump_state);
1133
1145
  }
1134
1146
 
1147
+ struct zstream_run_synchronized_args {
1148
+ struct zstream *z;
1149
+ Bytef *src;
1150
+ long len;
1151
+ int flush;
1152
+ };
1153
+
1154
+ static VALUE
1155
+ zstream_run_synchronized(VALUE value_arg)
1156
+ {
1157
+ struct zstream_run_synchronized_args *run_args = (struct zstream_run_synchronized_args *)value_arg;
1158
+ zstream_run0(run_args->z, run_args->src, run_args->len, run_args->flush);
1159
+ return Qnil;
1160
+ }
1161
+
1162
+ static void
1163
+ zstream_run(struct zstream *z, Bytef *src, long len, int flush)
1164
+ {
1165
+ struct zstream_run_synchronized_args run_args;
1166
+ run_args.z = z;
1167
+ run_args.src = src;
1168
+ run_args.len = len;
1169
+ run_args.flush = flush;
1170
+ rb_mutex_synchronize(z->mutex, zstream_run_synchronized, (VALUE)&run_args);
1171
+ }
1172
+
1135
1173
  static VALUE
1136
1174
  zstream_sync(struct zstream *z, Bytef *src, long len)
1137
1175
  {
@@ -1177,6 +1215,7 @@ zstream_mark(void *p)
1177
1215
  struct zstream *z = p;
1178
1216
  rb_gc_mark(z->buf);
1179
1217
  rb_gc_mark(z->input);
1218
+ rb_gc_mark(z->mutex);
1180
1219
  }
1181
1220
 
1182
1221
  static void
@@ -3514,6 +3553,16 @@ rb_gzfile_path(VALUE obj)
3514
3553
  return gz->path;
3515
3554
  }
3516
3555
 
3556
+ static VALUE
3557
+ gzfile_initialize_path_partial(VALUE obj)
3558
+ {
3559
+ struct gzfile* gz;
3560
+ TypedData_Get_Struct(obj, struct gzfile, &gzfile_data_type, gz);
3561
+ gz->path = rb_funcall(gz->io, id_path, 0);
3562
+ rb_define_singleton_method(obj, "path", rb_gzfile_path, 0);
3563
+ return Qnil;
3564
+ }
3565
+
3517
3566
  static void
3518
3567
  rb_gzfile_ecopts(struct gzfile *gz, VALUE opts)
3519
3568
  {
@@ -3622,8 +3671,8 @@ rb_gzwriter_initialize(int argc, VALUE *argv, VALUE obj)
3622
3671
  rb_gzfile_ecopts(gz, opt);
3623
3672
 
3624
3673
  if (rb_respond_to(io, id_path)) {
3625
- gz->path = rb_funcall(gz->io, id_path, 0);
3626
- rb_define_singleton_method(obj, "path", rb_gzfile_path, 0);
3674
+ /* File#path may raise IOError in case when a path is unavailable */
3675
+ rb_rescue2(gzfile_initialize_path_partial, obj, NULL, Qnil, rb_eIOError, (VALUE)0);
3627
3676
  }
3628
3677
 
3629
3678
  return obj;
@@ -3884,8 +3933,8 @@ rb_gzreader_initialize(int argc, VALUE *argv, VALUE obj)
3884
3933
  rb_gzfile_ecopts(gz, opt);
3885
3934
 
3886
3935
  if (rb_respond_to(io, id_path)) {
3887
- gz->path = rb_funcall(gz->io, id_path, 0);
3888
- rb_define_singleton_method(obj, "path", rb_gzfile_path, 0);
3936
+ /* File#path may raise IOError in case when a path is unavailable */
3937
+ rb_rescue2(gzfile_initialize_path_partial, obj, NULL, Qnil, rb_eIOError, (VALUE)0);
3889
3938
  }
3890
3939
 
3891
3940
  return obj;
@@ -4548,7 +4597,7 @@ zlib_gunzip_run(VALUE arg)
4548
4597
  void
4549
4598
  Init_zlib(void)
4550
4599
  {
4551
- #if HAVE_RB_EXT_RACTOR_SAFE
4600
+ #ifdef HAVE_RB_EXT_RACTOR_SAFE
4552
4601
  rb_ext_ractor_safe(true);
4553
4602
  #endif
4554
4603
 
data/zlib.gemspec CHANGED
@@ -22,14 +22,10 @@ Gem::Specification.new do |spec|
22
22
  spec.homepage = "https://github.com/ruby/zlib"
23
23
  spec.licenses = ["Ruby", "BSD-2-Clause"]
24
24
 
25
- spec.files = [".gitignore", "Gemfile", "LICENSE.txt", "README.md", "Rakefile", "bin/console", "bin/setup", "ext/zlib/extconf.rb", "ext/zlib/zlib.c", "zlib.gemspec"]
25
+ spec.files = ["LICENSE.txt", "README.md", "ext/zlib/extconf.rb", "ext/zlib/zlib.c", "zlib.gemspec"]
26
26
  spec.bindir = "exe"
27
- spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
27
+ spec.executables = []
28
28
  spec.require_paths = ["lib"]
29
29
  spec.extensions = "ext/zlib/extconf.rb"
30
30
  spec.required_ruby_version = ">= 2.3.0"
31
-
32
- spec.add_development_dependency "bundler"
33
- spec.add_development_dependency "rake"
34
- spec.add_development_dependency "rake-compiler"
35
31
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zlib
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yukihiro Matsumoto
@@ -10,49 +10,7 @@ autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
12
  date: 2021-10-14 00:00:00.000000000 Z
13
- dependencies:
14
- - !ruby/object:Gem::Dependency
15
- name: bundler
16
- requirement: !ruby/object:Gem::Requirement
17
- requirements:
18
- - - ">="
19
- - !ruby/object:Gem::Version
20
- version: '0'
21
- type: :development
22
- prerelease: false
23
- version_requirements: !ruby/object:Gem::Requirement
24
- requirements:
25
- - - ">="
26
- - !ruby/object:Gem::Version
27
- version: '0'
28
- - !ruby/object:Gem::Dependency
29
- name: rake
30
- requirement: !ruby/object:Gem::Requirement
31
- requirements:
32
- - - ">="
33
- - !ruby/object:Gem::Version
34
- version: '0'
35
- type: :development
36
- prerelease: false
37
- version_requirements: !ruby/object:Gem::Requirement
38
- requirements:
39
- - - ">="
40
- - !ruby/object:Gem::Version
41
- version: '0'
42
- - !ruby/object:Gem::Dependency
43
- name: rake-compiler
44
- requirement: !ruby/object:Gem::Requirement
45
- requirements:
46
- - - ">="
47
- - !ruby/object:Gem::Version
48
- version: '0'
49
- type: :development
50
- prerelease: false
51
- version_requirements: !ruby/object:Gem::Requirement
52
- requirements:
53
- - - ">="
54
- - !ruby/object:Gem::Version
55
- version: '0'
13
+ dependencies: []
56
14
  description: Ruby interface for the zlib compression/decompression library
57
15
  email:
58
16
  - matz@ruby-lang.org
@@ -62,13 +20,8 @@ extensions:
62
20
  - ext/zlib/extconf.rb
63
21
  extra_rdoc_files: []
64
22
  files:
65
- - ".gitignore"
66
- - Gemfile
67
23
  - LICENSE.txt
68
24
  - README.md
69
- - Rakefile
70
- - bin/console
71
- - bin/setup
72
25
  - ext/zlib/extconf.rb
73
26
  - ext/zlib/zlib.c
74
27
  - zlib.gemspec
data/.gitignore DELETED
@@ -1,12 +0,0 @@
1
- /.bundle/
2
- /.yardoc
3
- /Gemfile.lock
4
- /_yardoc/
5
- /coverage/
6
- /doc/
7
- /pkg/
8
- /spec/reports/
9
- /tmp/
10
- *.bundle
11
- *.so
12
- *.dll
data/Gemfile DELETED
@@ -1,4 +0,0 @@
1
- source 'https://rubygems.org'
2
-
3
- # Specify your gem's dependencies in zlib.gemspec
4
- gemspec
data/Rakefile DELETED
@@ -1,13 +0,0 @@
1
- require "bundler/gem_tasks"
2
- require "rake/testtask"
3
-
4
- Rake::TestTask.new(:test) do |t|
5
- t.libs << "test" << "test/lib"
6
- t.libs << "lib"
7
- t.test_files = FileList['test/**/test_*.rb']
8
- end
9
-
10
- require 'rake/extensiontask'
11
- Rake::ExtensionTask.new("zlib")
12
-
13
- task :default => [:compile, :test]
data/bin/console DELETED
@@ -1,14 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require "bundler/setup"
4
- require "zlib"
5
-
6
- # You can add fixtures and/or initialization code here to make experimenting
7
- # with your gem easier. You can also use a different console, if you like.
8
-
9
- # (If you use this, don't forget to add pry to your Gemfile!)
10
- # require "pry"
11
- # Pry.start
12
-
13
- require "irb"
14
- IRB.start(__FILE__)
data/bin/setup DELETED
@@ -1,8 +0,0 @@
1
- #!/usr/bin/env bash
2
- set -euo pipefail
3
- IFS=$'\n\t'
4
- set -vx
5
-
6
- bundle install
7
-
8
- # Do any other automated setup that you need to do here