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

ruby-changes:7726

From: akr <ko1@a...>
Date: Mon, 8 Sep 2008 23:09:01 +0900 (JST)
Subject: [ruby-changes:7726] Ruby:r19247 (trunk): * transcode.c (rb_econv_insert_output): "readagain" part should be

akr	2008-09-08 23:08:44 +0900 (Mon, 08 Sep 2008)

  New Revision: 19247

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

  Log:
    * transcode.c (rb_econv_insert_output): "readagain" part should be
      after replacement.

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

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 19246)
+++ ChangeLog	(revision 19247)
@@ -1,3 +1,8 @@
+Mon Sep  8 23:05:42 2008  Tanaka Akira  <akr@f...>
+
+	* transcode.c (rb_econv_insert_output): "readagain" part should be
+	  after replacement.
+
 Mon Sep  8 22:30:03 2008  NARUSE, Yui  <naruse@r...>
 
 	* dir.c (dir_initialize): rename option name of Dir.open
Index: test/ruby/test_econv.rb
===================================================================
--- test/ruby/test_econv.rb	(revision 19246)
+++ test/ruby/test_econv.rb	(revision 19247)
@@ -798,4 +798,9 @@
     assert_equal("&amp;\u3046\u2661&amp;\"'".force_encoding("utf-8"),
       "&\u3046\u2661&\"'".encode("utf-8", xml: :text))
   end
+
+  def test_iso2022jp_invalid_replace
+    assert_equal("?x".force_encoding("iso-2022-jp"),
+      "\222\xA1x".encode("iso-2022-jp", "stateless-iso-2022-jp", :invalid => :replace))
+  end
 end
Index: transcode.c
===================================================================
--- transcode.c	(revision 19246)
+++ transcode.c	(revision 19247)
@@ -1578,13 +1578,13 @@
         }
     }
 
+    memcpy(*data_end_p, insert_str, insert_len);
+    *data_end_p += insert_len;
     if (tc && tc->transcoder->stateful_type == stateful_encoder) {
         memcpy(*data_end_p, TRANSCODING_READBUF(tc)+tc->recognized_len, tc->readagain_len);
         *data_end_p += tc->readagain_len;
         tc->readagain_len = 0;
     }
-    memcpy(*data_end_p, insert_str, insert_len);
-    *data_end_p += insert_len;
 
     if (insert_str != str && insert_str != insert_buf)
         xfree((void*)insert_str);

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

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