diff options
-rw-r--r-- | ext/zlib/zlib.c | 13 |
1 files changed, 2 insertions, 11 deletions
diff --git a/ext/zlib/zlib.c b/ext/zlib/zlib.c index 096218b496..64a480cfed 100644 --- a/ext/zlib/zlib.c +++ b/ext/zlib/zlib.c @@ -829,17 +829,8 @@ zstream_buffer_ungets(struct zstream *z, const Bytef *b, unsigned long len) static void zstream_buffer_ungetbyte(struct zstream *z, int c) { - if (NIL_P(z->buf) || RSTRING_LEN(z->buf) - z->buf_filled == 0) { - zstream_expand_buffer(z); - } - - memmove(RSTRING_PTR(z->buf) + 1, RSTRING_PTR(z->buf), z->buf_filled); - RSTRING_PTR(z->buf)[0] = (char)c; - z->buf_filled++; - if (z->stream.avail_out > 0) { - z->stream.next_out++; - z->stream.avail_out--; - } + Bytef cc = (Bytef)c; + zstream_buffer_ungets(z, &cc, 1); } static void |