aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--ext/zlib/zlib.c2
-rw-r--r--test/zlib/test_zlib.rb6
3 files changed, 10 insertions, 3 deletions
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 <naruse@ruby-lang.org>
+
+ * 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) <yugui@yugui.jp>
* 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