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

ruby-changes:7112

From: akr <ko1@a...>
Date: Fri, 15 Aug 2008 01:06:46 +0900 (JST)
Subject: [ruby-changes:7112] Ruby:r18630 (trunk): * transcode.c (econv_primitive_convert): set destination_buffer

akr	2008-08-15 01:06:33 +0900 (Fri, 15 Aug 2008)

  New Revision: 18630

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

  Log:
    * transcode.c (econv_primitive_convert): set destination_buffer
      encoding.

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

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 18629)
+++ ChangeLog	(revision 18630)
@@ -1,3 +1,8 @@
+Fri Aug 15 01:05:39 2008  Tanaka Akira  <akr@f...>
+
+	* transcode.c (econv_primitive_convert): set destination_buffer
+	  encoding.
+
 Fri Aug 15 00:52:40 2008  Tanaka Akira  <akr@f...>
 
 	* include/ruby/encoding.h (rb_econv_output): declared.
Index: test/ruby/test_econv.rb
===================================================================
--- test/ruby/test_econv.rb	(revision 18629)
+++ test/ruby/test_econv.rb	(revision 18630)
@@ -31,6 +31,14 @@
     assert_equal(Encoding::EUC_JP, ec.destination_encoding)
   end
 
+  def test_result_encoding
+    ec = Encoding::Converter.new("UTF-8", "EUC-JP")
+    dst = "".force_encoding("ASCII-8BIT")
+    assert_equal(Encoding::ASCII_8BIT, dst.encoding)
+    ec.primitive_convert("\u{3042}", dst, nil, 10)
+    assert_equal(Encoding::EUC_JP, dst.encoding)
+  end
+
   def test_output_region
     ec = Encoding::Converter.new("UTF-8", "EUC-JP")
     ec.primitive_convert(src="a", dst="b", nil, 1, Encoding::Converter::PARTIAL_INPUT)
Index: transcode.c
===================================================================
--- transcode.c	(revision 18629)
+++ transcode.c	(revision 18630)
@@ -1676,6 +1676,10 @@
     rb_str_set_len(output, op-(unsigned char *)RSTRING_PTR(output));
     rb_str_drop_bytes(input, ip - (unsigned char *)RSTRING_PTR(input));
 
+    if (ec->destination_encoding) {
+        rb_enc_associate(output, ec->destination_encoding);
+    }
+
     switch (res) {
       case econv_invalid_byte_sequence: return ID2SYM(rb_intern("invalid_byte_sequence"));
       case econv_undefined_conversion: return ID2SYM(rb_intern("undefined_conversion"));

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

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