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