# \[Bug #3030\] make test-all fails with zlib 1.2.4

**URL:** <https://www.ruby-forum.com/t/bug-3030-make-test-all-fails-with-zlib-1-2-4/185883>\
**Category:** Development\
**Created:** [March 28, 2010, 9:39am UTC](https://www.ruby-forum.com/t/bug-3030-make-test-all-fails-with-zlib-1-2-4/185883 "2010-03-28T09:39:46Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![Takashi\_T](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/4af34b/32.png) [@Takashi\_T](https://www.ruby-forum.com/u/Takashi_T)\
**Post date:** [March 28, 2010, 9:39am UTC](https://www.ruby-forum.com/t/bug-3030-make-test-all-fails-with-zlib-1-2-4/185883/1 "2010-03-28T09:39:46Z")

</div>

Bug #3030: make test-all fails with zlib 1.2.4  
[http://redmine.ruby-lang.org/issues/show/3030](http://redmine.ruby-lang.org/issues/show/3030)

e$B5/I\<\<Te(B: Takashi T.  
e$B%9%F!\<%?%9e(B: Open, e$BM%@hEYe(B: Normal  
e$B%+%F%4%je(B: ext, Target version: 1.9.2  
ruby -v: ruby 1.9.2dev (2010-03-26 trunk 27066) [x86\_64-darwin10.2.0]

1.9 e$B$Ne(B trunk e$B$Ge(B make test-all e$B$9$k$H!“e(B  
zlib e$B4XO”$G0J2\<$N$h$&$J%(%i!\<$,$"$j$^$9!#e(B

$ ./ruby -v  
ruby 1.9.2dev (2010-03-26 trunk 27066) [x86\_64-darwin10.2.0]

$ port info zlib  
zlib @1.2.4, Revision 1 (archivers)

1. Error:  
test\_params(TestZlibDeflate):  
Zlib::BufError: buffer error  
/Users/tamura/ruby/src/ruby19/test/zlib/test\_zlib.rb:129:in `inflate' /Users/tamura/ruby/src/ruby19/test/zlib/test_zlib.rb:129:in `test\_params’

---

<div class="post-metadata">

**Author:** ![Takashi\_T](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/4af34b/32.png) [@Takashi\_T](https://www.ruby-forum.com/u/Takashi_T)\
**Post date:** [March 29, 2010, 8:11am UTC](https://www.ruby-forum.com/t/bug-3030-make-test-all-fails-with-zlib-1-2-4/185883/2 "2010-03-29T08:11:04Z")

</div>

2010/3/28 Takashi T. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> 1.9 e$B$Ne(B trunk e$B$Ge(B make test-all e$B$9$k$H!“e(B  
> zlib e$B4XO”$G0J2\<$N$h$&$J%(%i!\<$,$"$j$^$9!#e(B

ruby\_1\_8e$B$G$bF1MM$G$7$?!#e(Bzlib 1.2.4e$B$X$NDI=\>$,I,MW$G$9$M!#e(B  
e$B$3$l$be(Bmaintainere$B$,5o$J$$$N$+!#$I$J$?$+DI$$$+$1$F$k?M$O5o$^$9$+!)e(B  
e$B$$$J$1$l$P$d$j$^$9!#e(B

---

<div class="post-metadata">

**Author:** ![Takashi\_T](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/4af34b/32.png) [@Takashi\_T](https://www.ruby-forum.com/u/Takashi_T)\
**Post date:** [March 31, 2010, 9:20am UTC](https://www.ruby-forum.com/t/bug-3030-make-test-all-fails-with-zlib-1-2-4/185883/3 "2010-03-31T09:20:35Z")

</div>

e$B$J$+$@$G$9!#e(B

At Sun, 28 Mar 2010 16:39:07 +0900,  
Takashi T. wrote in [ruby-dev:40802]:

> $ port info zlib  
> zlib @1.2.4, Revision 1 (archivers)
> 
> 1. Error:  
> test\_params(TestZlibDeflate):  
> Zlib::BufError: buffer error  
> /Users/tamura/ruby/src/ruby19/test/zlib/test\_zlib.rb:129:in `inflate' /Users/tamura/ruby/src/ruby19/test/zlib/test_zlib.rb:129:in`test\_params’

1.2.4e$B$Ne(BdeflateParams()e$B$,!"$9$G$Ke(Bflushe$B$7$F$$$k$N$K:FEYF1$8%G!\<%?e(B  
e$B$rDI2C$7$F$$$k$h$&$G$9!#$=$l$r$A$c$s$H%+%&%s%H$7$F$$$J$$$N$Oe(B  
ext/zlibe$B$N%P%0$@$H;W$&$N$G$9$,!“e(Bzlib  
1.2.4e$B$N$[$&$b$^$?%P%0$,$”$ke(B  
e$B$h$&$J5$$,$7$^$9!#$I$C$A$,$$$$$s$G$7$g$&$M$’!#e(B

diff --git a/ext/zlib/zlib.c b/ext/zlib/zlib.c  
index 435a1a6…fbeb72a 100644  
— a/ext/zlib/zlib.c  
+++ b/ext/zlib/zlib.c  
@@ -1371,16 +1371,31 @@ rb\_deflate\_params(VALUE obj, VALUE v\_level,  
VALUE v\_strategy)  
struct zstream \*z = get\_zstream(obj);  
int level, strategy;  
int err;

- uInt n; /\* workaround for 1.2.4 \*/  
+#if 0

- /\* add extra data \*/  
+#define ADJUST(z, n) (z-\>buf\_filled += n - z-\>stream.avail\_out)  
+#else

- /\* drop extra data \*/  
+#define ADJUST(z, n) ( \

- z-\>stream.next\_out -= n - z-\>stream.avail\_out, \

- z-\>stream.avail\_out = n)  
+#endif

- zstream\_run(z, (Bytef\*)"", 0, Z\_SYNC\_FLUSH);

- n = z-\>stream.avail\_out;  
err = deflateParams(&z-\>stream, level, strategy);

- ADJUST(z, n);  
while (err == Z\_BUF\_ERROR) {  
rb\_warning(“deflateParams() returned Z\_BUF\_ERROR”);  
zstream\_expand\_buffer(z);

- n = z-\>stream.avail\_out;  
err = deflateParams(&z-\>stream, level, strategy);

- ADJUST(z, n);  
}  
if (err != Z\_OK) {  
raise\_zlib\_error(err, z-\>stream.msg);

---

<div class="post-metadata">

**Author:** ![Takashi\_T](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/4af34b/32.png) [@Takashi\_T](https://www.ruby-forum.com/u/Takashi_T)\
**Post date:** [April 20, 2010, 5:28pm UTC](https://www.ruby-forum.com/t/bug-3030-make-test-all-fails-with-zlib-1-2-4/185883/4 "2010-04-20T17:28:50Z")

</div>

e$B%A%1%C%He(B #3030 e$B$,99?7$5$l$^$7$?!#e(B (by Yusuke E.)

e$B%9%F!\<%?%9e(B Opene$B$+$ie(BClosede$B$KJQ99e(B  
e$B?JD=e(B % 0e$B$+$ie(B100e$B$KJQ99e(B

This issue was solved with changeset r27423.  
Takashi, thank you for reporting this issue.  
Your contribution to Ruby is greatly appreciated.  
May Ruby be with you.

* * *

[http://redmine.ruby-lang.org/issues/show/3030](http://redmine.ruby-lang.org/issues/show/3030)

---

<div class="post-metadata">

**Author:** ![Takashi\_T](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/4af34b/32.png) [@Takashi\_T](https://www.ruby-forum.com/u/Takashi_T)\
**Post date:** [April 20, 2010, 4:44pm UTC](https://www.ruby-forum.com/t/bug-3030-make-test-all-fails-with-zlib-1-2-4/185883/5 "2010-04-20T16:44:55Z")

</div>

e$B%A%1%C%He(B #3030 e$B$,99?7$5$l$^$7$?!#e(B (by Yusuke E.)

e$BC4Ev\<Te(B Yusuke E.e$B$K%;%C%He(B

e$B1sF#$G$9!#e(B

> 1.2.4e$B$Ne(BdeflateParams()e$B$,!"$9$G$Ke(Bflushe$B$7$F$$$k$N$K:FEYF1$8%G!\<%?e(B  
> e$B$rDI2C$7$F$$$k$h$&$G$9!#$=$l$r$A$c$s$H%+%&%s%H$7$F$$$J$$$N$Oe(B  
> ext/zlibe$B$N%P%0$@$H;W$&$N$G$9$,!“e(Bzlib 1.2.4e$B$N$[$&$b$^$?%P%0$,$”$ke(B  
> e$B$h$&$J5$$,$7$^$9!#$I$C$A$,$$$$$s$G$7$g$&$M$'!#e(B

zlib 1.2.5 e$B$G3N$+$a$^$7$?$,!“e(Bzlib  
e$BK\BN$K%P%0$O$J$$$H;W$$$^$9!#e(B  
deflateParams e$B$,e(B flush e$B$7$F$k$N$O!”%G!\<%?$G$O$J$/!"e(Bbyte  
boundary e$B$Ke(B  
align e$B$5$;$k$?$a$Ne(B dummy block (e$BE83+$7$F$bD9$5e(B 0  
e$B$K$J$k%V%m%C%/e(B) e$B$Ne(B  
e$B$h$&$G$9!#e(B

ext/zlib e$BB&$G$o$6$o$6e(B Z\_SYNC\_FLUSH  
e$B$7$J$1$l$PM\>7W$J%G!\<%?$,=P$J$/e(B  
e$B$J$k$H;W$$$^$9!#$3$Ne(B flush e$B$Oe(B #239  
e$B$r=$@5$9$k$?$a$KF~$C$?e(B (r18029)  
e$B$N$G$9$,$3$l$O4V0c$C$?2r7hJ}K!$G!":#2s$N$J$+$@$5$s$N%Q%C%A$N$h$&$Ke(B  
deflatePrams e$B?J$s$@J,%+%&%s%?$r99?7$9$k$N$,@5$7$$2r7hJ}K!$G$7$?!#e(B  
(e$B$^$C$?$/C/$,$3$s$JJQ$Je(B flush e$B$rF~$l$?$s$G$7$g$&$M!#e(B)

e$B$H$$$&$o$1$G!"0J2\<$N%Q%C%A$G$h$$$H;W$$$^$9!#e(B

diff --git a/ext/zlib/zlib.c b/ext/zlib/zlib.c  
index 435a1a6…8c3af3d 100644  
— a/ext/zlib/zlib.c  
+++ b/ext/zlib/zlib.c  
@@ -1371,16 +1371,20 @@ rb\_deflate\_params(VALUE obj, VALUE v\_level,  
VALUE v\_strategy)  
struct zstream \*z = get\_zstream(obj);  
int level, strategy;  
int err;

- uInt n;

- zstream\_run(z, (Bytef\*)“”, 0, Z\_SYNC\_FLUSH);

- n = z-\>stream.avail\_out;  
err = deflateParams(&z-\>stream, level, strategy);
- z-\>buf\_filled += n - z-\>stream.avail\_out;  
while (err == Z\_BUF\_ERROR) {  
rb\_warning(“deflateParams() returned Z\_BUF\_ERROR”);  
zstream\_expand\_buffer(z);
- n = z-\>stream.avail\_out;  
err = deflateParams(&z-\>stream, level, strategy);
- z-\>buf\_filled += n - z-\>stream.avail\_out;  
}  
if (err != Z\_OK) {  
raise\_zlib\_error(err, z-\>stream.msg);

## – Yusuke E. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

[http://redmine.ruby-lang.org/issues/show/3030](http://redmine.ruby-lang.org/issues/show/3030)
