In article <cenm45$4gg / odak26.prod.google.com>, "StephenSykes" <jbshaldane / hotmail.com> writes: > Shouldn't Zlib::GzipReader#read return "" when you try to read 0 bytes? > At the moment it returns nil, which differs in behaviour to IO#read. I think it should be too. > This wouldn't normally matter, but Marshal sometimes tries to read 0 > bytes during its work for some reason which I am trying to investigate > (anyone know what circumstances would cause marshal to do that?) > Regards, Interesting example. Index: ext/zlib/zlib.c =================================================================== RCS file: /src/ruby/ext/zlib/zlib.c,v retrieving revision 1.13 diff -u -p -r1.13 zlib.c --- ext/zlib/zlib.c 23 Jun 2004 09:19:14 -0000 1.13 +++ ext/zlib/zlib.c 3 Aug 2004 16:13:48 -0000 @@ -2075,7 +2075,10 @@ gzfile_read(gz, len) { VALUE dst; - if (len <= 0) return Qnil; + if (len < 0) + rb_raise(rb_eArgError, "negative length %ld given", len); + if (len == 0) + return rb_str_new(0, 0); while (!ZSTREAM_IS_FINISHED(&gz->z) && gz->z.buf_filled < len) { gzfile_read_more(gz); } -- Tanaka Akira