[前][次][番号順一覧][スレッド一覧]

ruby-changes:19165

From: yugui <ko1@a...>
Date: Mon, 28 Mar 2011 22:46:31 +0900 (JST)
Subject: [ruby-changes:19165] Ruby:r31204 (ruby_1_9_2): merges r30772,r30773 and r30776 from trunk into ruby_1_9_2.

yugui	2011-03-28 22:41:03 +0900 (Mon, 28 Mar 2011)

  New Revision: 31204

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=31204

  Log:
    merges r30772,r30773 and r30776 from trunk into ruby_1_9_2.
    --
    * ext/zlib/zlib.c (gzfile_reader_get_unused): use rb_str_new_shared
      because gz->z.input is hidden string. [ruby-core:35057]
    --
    e ext/zlib/zlib.c (gzfile_reader_get_unused): use rb_str_resurrect
    --
    * ext/zlib/zlib.c (gzfile_reader_get_unused): no need to dup
      before rb_str_resurrect.

  Modified files:
    branches/ruby_1_9_2/ChangeLog
    branches/ruby_1_9_2/ext/zlib/zlib.c
    branches/ruby_1_9_2/test/zlib/test_zlib.rb
    branches/ruby_1_9_2/version.h

Index: ruby_1_9_2/ChangeLog
===================================================================
--- ruby_1_9_2/ChangeLog	(revision 31203)
+++ ruby_1_9_2/ChangeLog	(revision 31204)
@@ -1,3 +1,13 @@
+Fri Feb  4 00:14:55 2011  Nobuyoshi Nakada  <nobu@r...>
+
+	* ext/zlib/zlib.c (gzfile_reader_get_unused): no need to dup
+	  before rb_str_resurrect.
+
+Thu Feb  3 18:33:26 2011  NARUSE, Yui  <naruse@r...>
+
+	e ext/zlib/zlib.c (gzfile_reader_get_unused): use rb_str_resurrect
+	  because gz->z.input is hidden string. [ruby-core:35057]
+
 Thu Feb  3 07:02:16 2011  Aaron Patterson <aaron@t...>
 
 	* ext/psych/lib/psych/visitors/to_ruby.rb: ARG_ENCODING_NONE regular
Index: ruby_1_9_2/ext/zlib/zlib.c
===================================================================
--- ruby_1_9_2/ext/zlib/zlib.c	(revision 31203)
+++ ruby_1_9_2/ext/zlib/zlib.c	(revision 31204)
@@ -2400,7 +2400,7 @@
     }
     if (NIL_P(gz->z.input)) return Qnil;
 
-    str = rb_str_dup(gz->z.input);
+    str = rb_str_resurrect(gz->z.input);
     OBJ_TAINT(str);  /* for safe */
     return str;
 }
Index: ruby_1_9_2/version.h
===================================================================
--- ruby_1_9_2/version.h	(revision 31203)
+++ ruby_1_9_2/version.h	(revision 31204)
@@ -1,5 +1,5 @@
 #define RUBY_VERSION "1.9.2"
-#define RUBY_PATCHLEVEL 187
+#define RUBY_PATCHLEVEL 188
 #define RUBY_VERSION_MAJOR 1
 #define RUBY_VERSION_MINOR 9
 #define RUBY_VERSION_TEENY 1
Index: ruby_1_9_2/test/zlib/test_zlib.rb
===================================================================
--- ruby_1_9_2/test/zlib/test_zlib.rb	(revision 31203)
+++ ruby_1_9_2/test/zlib/test_zlib.rb	(revision 31204)
@@ -86,7 +86,7 @@
     def test_adler
       z = Zlib::Deflate.new
       z << "foo"
-      s = z.finish
+      z.finish
       assert_equal(0x02820145, z.adler)
     end
 
@@ -95,7 +95,7 @@
       assert_equal(false, z.finished?)
       z << "foo"
       assert_equal(false, z.finished?)
-      s = z.finish
+      z.finish
       assert_equal(true, z.finished?)
       z.close
       assert_raise(Zlib::Error) { z.finished? }
@@ -459,14 +459,42 @@
       t.close
       Zlib::GzipWriter.open(t.path) {|gz| gz.print("foobar") }
 
-      f = Zlib::GzipReader.open(t.path)
-      assert_equal("foo", f.read(3))
-      f.unused
-      assert_equal("bar", f.read)
-      f.unused
-      f.close
+      Zlib::GzipReader.open(t.path) do |f|
+        assert_equal(nil, f.unused)
+        assert_equal("foo", f.read(3))
+        assert_equal(nil, f.unused)
+        assert_equal("bar", f.read)
+        assert_equal(nil, f.unused)
+      end
     end
 
+    def test_unused2
+      zio = StringIO.new
+
+      io = Zlib::GzipWriter.new zio
+      io.write 'aaaa'
+      io.finish
+
+      io = Zlib::GzipWriter.new zio
+      io.write 'bbbb'
+      io.finish
+
+      zio.rewind
+
+      io = Zlib::GzipReader.new zio
+      assert_equal('aaaa', io.read)
+      unused = io.unused
+      assert_equal(24, unused.bytesize)
+      io.finish
+
+      zio.pos -= unused.length
+
+      io = Zlib::GzipReader.new zio
+      assert_equal('bbbb', io.read)
+      assert_equal(nil, io.unused)
+      io.finish
+    end
+
     def test_read
       t = Tempfile.new("test_zlib_gzip_reader")
       t.close

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]