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

ruby-changes:2343

From: ko1@a...
Date: 8 Nov 2007 07:23:26 +0900
Subject: [ruby-changes:2343] davidflanagan - Ruby:r13834 (trunk): * string.c (tr_setup_table, tr_trans): fix test failures in test/ruby/test_string.rb

davidflanagan	2007-11-08 07:07:13 +0900 (Thu, 08 Nov 2007)

  New Revision: 13834

  Modified files:
    trunk/ChangeLog
    trunk/string.c

  Log:
    * string.c (tr_setup_table, tr_trans): fix test failures in test/ruby/test_string.rb

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/string.c?r1=13834&r2=13833
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ChangeLog?r1=13834&r2=13833

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 13833)
+++ ChangeLog	(revision 13834)
@@ -1,3 +1,7 @@
+Thu Nov  8 07:04:31 UTC 2007 David Flanagan <davidflanagan@r...>
+	* string.c (tr_setup_table, tr_trans): fix test failures
+	  in test/ruby/test_string.rb
+	
 Wed Nov  7 15:07:51 2007  Nobuyoshi Nakada  <nobu@r...>
 
 	* enum.c (enum_each_with_index): make different arrays at each
@@ -3,5 +7,5 @@
 	  iteration.  [ruby-dev:32181]
 
-Tue Nov  7 05:17:24 2007  David Flanagan <davidflanagan@r...>
+Wed Nov  7 05:17:24 2007  David Flanagan <davidflanagan@r...>
 
 	* eval.c: fix typo in invoke_method documentation
Index: string.c
===================================================================
--- string.c	(revision 13833)
+++ string.c	(revision 13834)
@@ -3450,11 +3450,11 @@
 		    tlen = rb_enc_codelen(c, enc);
 		    modify = 1;
 		}
+		else {
+		    save = c = last;
+		    modify = 1;
+		}
 	    }
-	    else if (cflag) {
-		save = c = last;
-		modify = 1;
-	    }
 	    else {
 		save = -1;
 	    }
@@ -3482,11 +3482,11 @@
 		    *s = c;
 		    modify = 1;
 		}
+		else {
+		    *s = last;
+		    modify = 1;
+		}
 	    }
-	    else if (cflag) {
-		*s = last;
-		modify = 1;
-	    }
 	    s++;
 	}
     }
@@ -3513,11 +3513,11 @@
 		    tlen = rb_enc_codelen(c, enc);
 		    modify = 1;
 		}
+		else {
+		    c = last;
+		    modify = 1;
+		}
 	    }
-	    else if (cflag) {
-		c = last;
-		modify = 1;
-	    }
 	    while (t - buf + tlen >= max) {
 		offset = t - buf;
 		max *= 2;
@@ -3585,7 +3585,7 @@
 }
 
 static void
-tr_setup_table(VALUE str, char stable[256],
+tr_setup_table(VALUE str, char stable[256], int first, 
 	       VALUE *tablep, VALUE *ctablep, rb_encoding *enc)
 {
     char buf[256];
@@ -3601,8 +3601,10 @@
 	cflag = 1;
 	tr.p++;
     }
-    for (i=0; i<256; i++) {
-	stable[i] = 1;
+    if (first) {
+	for (i=0; i<256; i++) {
+	    stable[i] = 1;
+	}
     }
     for (i=0; i<256; i++) {
 	buf[i] = cflag;
@@ -3680,7 +3682,7 @@
 
 	StringValue(s);
 	enc = rb_enc_check(str, s);
-	tr_setup_table(s, squeez, &del, &nodel, enc);
+	tr_setup_table(s, squeez, i==0, &del, &nodel, enc);
     }
 
     rb_str_modify(str);
@@ -3758,7 +3760,7 @@
 
 	    StringValue(s);
 	    enc = rb_enc_check(str, s);
-	    tr_setup_table(s, squeez, &del, &nodel, enc);
+	    tr_setup_table(s, squeez, i==0, &del, &nodel, enc);
 	}
     }
 
@@ -3883,7 +3885,7 @@
 
 	StringValue(s);
 	enc = rb_enc_check(str, s);
-	tr_setup_table(s, table, &del, &nodel, enc);
+	tr_setup_table(s, table,i==0, &del, &nodel, enc);
     }
 
     s = RSTRING_PTR(str);

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

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