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/