In article <1072197138.772607.16885.nullmailer / picachu.netlab.jp>,
  matz / ruby-lang.org (Yukihiro Matsumoto) writes:

> と思うので、今回は変更なしでよいと思います。Zlib::GzipReader
> は私の方で手直ししておきましょうか。

zlib はこんなかんじでしょうか。

「例によって」buf は未サポートですが。

% ruby -rzlib -rstringio -e '
f = Zlib::GzipReader.new(StringIO.new("\037\213\010\000\000\000\000\000\000\003\003\000\000\000\000\000\000\000\000\000"))
p f.read; p f.read'
nil
nil

というのが

% ruby -rzlib -rstringio -e '
f = Zlib::GzipReader.new(StringIO.new("\037\213\010\000\000\000\000\000\000\003\003\000\000\000\000\000\000\000\000\000"))
p f.read; p f.read'
""
""

と変わります。

なお、read(0) が常に nil を返しますが、まぁ気にしないということで。

Index: ext/zlib/zlib.c
===================================================================
RCS file: /src/ruby/ext/zlib/zlib.c,v
retrieving revision 1.6
diff -u -r1.6 zlib.c
--- ext/zlib/zlib.c	6 Nov 2003 19:10:12 -0000	1.6
+++ ext/zlib/zlib.c	24 Dec 2003 10:04:54 -0000
@@ -1813,7 +1813,7 @@
 	if (!(gz->z.flags & GZFILE_FLAG_FOOTER_FINISHED)) {
 	    gzfile_check_footer(gz);
 	}
-	return Qnil;
+	return rb_str_new(0, 0);
     }
 
     dst = zstream_detach_buffer(&gz->z);
-- 
[田中 哲][たなか あきら][Tanaka Akira]