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

ruby-changes:3076

From: ko1@a...
Date: 24 Dec 2007 11:41:10 +0900
Subject: [ruby-changes:3076] matz - Ruby:r14568 (trunk): * string.c (rb_str_comparable): fixed to keep transitivity.

matz	2007-12-24 11:40:55 +0900 (Mon, 24 Dec 2007)

  New Revision: 14568

  Modified files:
    trunk/ChangeLog
    trunk/string.c
    trunk/test/ruby/test_io.rb

  Log:
    * string.c (rb_str_comparable): fixed to keep transitivity.
      [ruby-dev:32693]

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/test/ruby/test_io.rb?r1=14568&r2=14567
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/string.c?r1=14568&r2=14567
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ChangeLog?r1=14568&r2=14567

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 14567)
+++ ChangeLog	(revision 14568)
@@ -1,3 +1,8 @@
+Mon Dec 24 11:32:44 2007  Yukihiro Matsumoto  <matz@r...>
+
+	* string.c (rb_str_comparable): fixed to keep transitivity.
+	  [ruby-dev:32693]
+
 Mon Dec 24 11:20:31 2007  Eric Hodel  <drbrain@s...>
 
 	* lib/rdoc/ri/ri_options.rb:  Fix display of GEMDIRS, make command
@@ -20,8 +25,6 @@
 	* transcode.c, transcode_data_one_byte.c, transcode_data_japanese.c:
 	  added rb_ prefix to external data symbols.
 
-Mon Dec 24 06:36:00 2007  Yukihiro Matsumoto  <matz@r...>
-
 Mon Dec 24 05:32:22 2007  Yukihiro Matsumoto  <matz@r...>
 
 	* enum.c (enum_inject): updated documentation.  a patch from Keita
Index: string.c
===================================================================
--- string.c	(revision 14567)
+++ string.c	(revision 14568)
@@ -1274,10 +1274,15 @@
     if (idx1 == idx2) return Qtrue;
     rc1 = rb_enc_str_coderange(str1);
     rc2 = rb_enc_str_coderange(str2);
-    if (rc1 == ENC_CODERANGE_7BIT && rc2 == ENC_CODERANGE_7BIT)
-	return Qtrue;
-    if (rc1 == ENC_CODERANGE_BROKEN) return Qtrue;
-    if (rc2 == ENC_CODERANGE_BROKEN) return Qtrue;
+    if (rc1 == ENC_CODERANGE_7BIT) {
+	if (rc2 == ENC_CODERANGE_7BIT) return Qtrue;
+	if (rb_enc_asciicompat(rb_enc_from_index(idx1)))
+	    return Qtrue;
+    }
+    if (rc2 == ENC_CODERANGE_7BIT) {
+	if (rb_enc_asciicompat(rb_enc_from_index(idx2)))
+	    return Qtrue;
+    }
     return Qfalse;
 }
 
@@ -1293,6 +1298,11 @@
     retval = memcmp(RSTRING_PTR(str1), RSTRING_PTR(str2), len);
     if (retval == 0) {
 	if (RSTRING_LEN(str1) == RSTRING_LEN(str2)) {
+	    if (!enc) {
+		if (rb_enc_get(str1) - rb_enc_get(str2) > 0)
+		    return 1;
+		return -1;
+	    }
 	    return 0;
 	}
 	if (RSTRING_LEN(str1) > RSTRING_LEN(str2)) return 1;
Index: test/ruby/test_io.rb
===================================================================
--- test/ruby/test_io.rb	(revision 14567)
+++ test/ruby/test_io.rb	(revision 14568)
@@ -23,6 +23,7 @@
     r, w = IO.pipe
     w.print "\377xyz"
     w.close
+    r.binmode
     assert_equal("\377", r.gets("\377"), "[ruby-dev:24460]")
     r.close
 

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

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