次のように、Zlib::GzipReader#ungetc を使うと crc error が起こることがあります。

% ruby -v -rzlib -e '
io = Zlib::GzipReader.new(STDIN)
io.read(100)
io.ungetc ?a
io.read(100)
io.read
io.close
' < ruby-1.8.1.tar.gz
ruby 1.9.0 (2004-08-11) [i686-linux]
-e:7:in `close': invalid compressed data -- crc error (Zlib::GzipFile::CRCError)
        from -e:7

次のように ungetc を使わなければ、crc error は起こりません。

% ruby -v -rzlib -e '                  
io = Zlib::GzipReader.new(STDIN)
io.read(100)
#io.ungetc ?a
io.read(100)
io.read
io.close
' < ruby-1.8.1.tar.gz
ruby 1.9.0 (2004-08-11) [i686-linux]
% md5sum ruby-1.8.1.tar.gz 
5d52c7d0e6a6eb6e3bc68d77e794898e  ruby-1.8.1.tar.gz
-- 
[田中 哲][たなか あきら][Tanaka Akira]