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

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

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