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