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

ruby-changes:7447

From: akr <ko1@a...>
Date: Sun, 31 Aug 2008 04:36:53 +0900 (JST)
Subject: [ruby-changes:7447] Ruby:r18966 (trunk): * transcode.c (rb_econv_putback): putback from last byte.

akr	2008-08-31 04:36:38 +0900 (Sun, 31 Aug 2008)

  New Revision: 18966

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

  Log:
    * transcode.c (rb_econv_putback): putback from last byte.

  Modified files:
    trunk/ChangeLog
    trunk/test/ruby/test_econv.rb
    trunk/transcode.c

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 18965)
+++ ChangeLog	(revision 18966)
@@ -1,3 +1,7 @@
+Sun Aug 31 04:35:21 2008  Tanaka Akira  <akr@f...>
+
+	* transcode.c (rb_econv_putback): putback from last byte.
+
 Sun Aug 31 04:27:04 2008  Tanaka Akira  <akr@f...>
 
 	* transcode.c (econv_putback): renamed from econv_primitive_putback.
Index: test/ruby/test_econv.rb
===================================================================
--- test/ruby/test_econv.rb	(revision 18965)
+++ test/ruby/test_econv.rb	(revision 18966)
@@ -485,6 +485,15 @@
     assert_equal(["abcdef", ""], [dst, src])
   end
 
+  def test_putback2
+    ec = Encoding::Converter.new("utf-16le", "euc-jp")
+    ret = ec.primitive_convert(src="\x00\xd8\x21\x00", dst="", nil, nil)
+    assert_equal(:invalid_byte_sequence, ret)
+    assert_equal("\x00", ec.putback(1))
+    assert_equal("\x21", ec.putback(1))
+    assert_equal("", ec.putback(1))
+  end
+
   def test_invalid_replace
     ec = Encoding::Converter.new("UTF-8", "EUC-JP", Encoding::Converter::INVALID_REPLACE)
     ret = ec.primitive_convert(src="abc\x80def", dst="", nil, 100)
Index: transcode.c
===================================================================
--- transcode.c	(revision 18965)
+++ transcode.c	(revision 18966)
@@ -1452,7 +1452,7 @@
     if (ec->num_trans == 0 || n == 0)
         return;
     tc = ec->elems[0].tc;
-    memcpy(p, TRANSCODING_READBUF(tc) + tc->recognized_len, n);
+    memcpy(p, TRANSCODING_READBUF(tc) + tc->recognized_len + tc->readagain_len - n, n);
     tc->readagain_len -= n;
 }
 

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

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