diff options
Diffstat (limited to 'ext/zlib/zlib.c')
-rw-r--r-- | ext/zlib/zlib.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/ext/zlib/zlib.c b/ext/zlib/zlib.c index e665b7b6b2..c5e9e7437c 100644 --- a/ext/zlib/zlib.c +++ b/ext/zlib/zlib.c @@ -2075,7 +2075,10 @@ gzfile_read(gz, len) { VALUE dst; - if (len <= 0) return Qnil; + if (len < 0) + rb_raise(rb_eArgError, "negative length %d 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); } |