diff --git a/ChangeLog b/ChangeLog index 2d02e95834..629e11c902 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Sun Aug 30 01:15:31 2009 NARUSE, Yui + + * ext/zlib/zlib.c (gzfile_read_all): use gzfile_newstr; + set and convert its encoding. [ruby-dev:38304] + Sat Aug 29 20:40:02 2009 Yuki Sonoda (Yugui) * vm_eval.c (rb_call0): gets rid of checking method cache twice. diff --git a/ext/zlib/zlib.c b/ext/zlib/zlib.c index 288b13b728..8f23bcff21 100644 --- a/ext/zlib/zlib.c +++ b/ext/zlib/zlib.c @@ -2202,7 +2202,7 @@ gzfile_read_all(struct gzfile *gz) dst = zstream_detach_buffer(&gz->z); gzfile_calc_crc(gz, dst); OBJ_TAINT(dst); - return dst; + return gzfile_newstr(gz, dst); } static VALUE diff --git a/test/zlib/test_zlib.rb b/test/zlib/test_zlib.rb index aa3059d5b1..abb3ea32b3 100644 --- a/test/zlib/test_zlib.rb +++ b/test/zlib/test_zlib.rb @@ -470,10 +470,12 @@ if defined? Zlib def test_read t = Tempfile.new("test_zlib_gzip_reader") t.close - Zlib::GzipWriter.open(t.path) {|gz| gz.print("foobar") } + str = "\u3042\u3044\u3046" + Zlib::GzipWriter.open(t.path) {|gz| gz.print(str) } - f = Zlib::GzipReader.open(t.path) + f = Zlib::GzipReader.open(t.path, encoding: "UTF-8") assert_raise(ArgumentError) { f.read(-1) } + assert_equal(str, f.read) end def test_readpartial