ruby-changes:2878
From: ko1@a...
Date: 21 Dec 2007 00:28:25 +0900
Subject: [ruby-changes:2878] matz - Ruby:r14369 (trunk): * string.c (tr_trans): wrong encoding check for tree strings.
matz 2007-12-21 00:27:35 +0900 (Fri, 21 Dec 2007) New Revision: 14369 Modified files: trunk/ChangeLog trunk/string.c trunk/test/ruby/test_m17n.rb trunk/version.h Log: * string.c (tr_trans): wrong encoding check for tree strings. * test/ruby/test_m17n.rb (TestM17N::test_tr_s): "invalid mbstring sequence" is not an error to be tested. http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/version.h?r1=14369&r2=14368 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/string.c?r1=14369&r2=14368 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ChangeLog?r1=14369&r2=14368 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/test/ruby/test_m17n.rb?r1=14369&r2=14368 Index: ChangeLog =================================================================== --- ChangeLog (revision 14368) +++ ChangeLog (revision 14369) @@ -1,3 +1,10 @@ +Fri Dec 21 00:26:39 2007 Yukihiro Matsumoto <matz@r...> + + * string.c (tr_trans): wrong encoding check for tree strings. + + * test/ruby/test_m17n.rb (TestM17N::test_tr_s): "invalid mbstring + sequence" is not an error to be tested. + Thu Dec 20 19:29:07 2007 Shugo Maeda <shugo@r...> * lib/net/imap.rb (initialize): the second argument is an option Index: string.c =================================================================== --- string.c (revision 14368) +++ string.c (revision 14369) @@ -3453,7 +3453,7 @@ tr_trans(VALUE str, VALUE src, VALUE repl, int sflag) { SIGNED_VALUE trans[256]; - rb_encoding *enc; + rb_encoding *enc, *e1, *e2; struct tr trsrc, trrepl; int cflag = 0; int c, last = 0, modify = 0, i; @@ -3471,10 +3471,14 @@ if (RSTRING_LEN(repl) == 0) { return rb_str_delete_bang(1, &src, str); } - enc = rb_enc_check(str, src); - if (rb_enc_check(str, repl) != enc) { - rb_raise(rb_eArgError, "character encodings differ"); + e1 = rb_enc_check(str, src); + e2 = rb_enc_check(str, repl); + if (e1 == e2) { + enc = e1; } + else { + enc = rb_enc_check(src, repl); + } trrepl.p = RSTRING_PTR(repl); trrepl.pend = trrepl.p + RSTRING_LEN(repl); trsrc.gen = trrepl.gen = 0; Index: version.h =================================================================== --- version.h (revision 14368) +++ version.h (revision 14369) @@ -1,7 +1,7 @@ #define RUBY_VERSION "1.9.0" -#define RUBY_RELEASE_DATE "2007-12-20" +#define RUBY_RELEASE_DATE "2007-12-21" #define RUBY_VERSION_CODE 190 -#define RUBY_RELEASE_CODE 20071220 +#define RUBY_RELEASE_CODE 20071221 #define RUBY_PATCHLEVEL 0 #define RUBY_VERSION_MAJOR 1 @@ -9,7 +9,7 @@ #define RUBY_VERSION_TEENY 0 #define RUBY_RELEASE_YEAR 2007 #define RUBY_RELEASE_MONTH 12 -#define RUBY_RELEASE_DAY 20 +#define RUBY_RELEASE_DAY 21 #ifdef RUBY_EXTERN RUBY_EXTERN const char ruby_version[]; Index: test/ruby/test_m17n.rb =================================================================== --- test/ruby/test_m17n.rb (revision 14368) +++ test/ruby/test_m17n.rb (revision 14369) @@ -1643,7 +1643,7 @@ #puts "#{encdump s1}.tr_s(#{encdump s2}, #{encdump s3})" t = s1.tr_s(s2, s3) rescue ArgumentError - e = $! + e = $! unless /mbstring sequence/ =~ $!.message end if e encs = [] @@ -1651,7 +1651,7 @@ encs << s2.encoding if !is_ascii_only?(s2) encs << s3.encoding if !is_ascii_only?(s3) encs.uniq! - #p e, encs + #p e, encs, assert(1 < encs.length, "#{encdump s1}.tr_s(#{encdump s2}, #{encdump s3})") end } -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml