diff options
author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-03-11 00:55:02 +0000 |
---|---|---|
committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-03-11 00:55:02 +0000 |
commit | bb6912a46c17d1ea6ff941f29fedf12b6c0f84fc (patch) | |
tree | 8f5078984dd27b9b2dbdeef15d884dd9f3c07156 /string.c | |
parent | 384962cd1b57658ba0977c5d8166cadd9cec1c4a (diff) | |
download | ruby-bb6912a46c17d1ea6ff941f29fedf12b6c0f84fc.tar.gz ruby-bb6912a46c17d1ea6ff941f29fedf12b6c0f84fc.tar.xz ruby-bb6912a46c17d1ea6ff941f29fedf12b6c0f84fc.zip |
* string.c (rb_str_comparable): empty strings in any encoding are
compatible each other.
git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@15742 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'string.c')
-rw-r--r-- | string.c | 11 |
1 files changed, 7 insertions, 4 deletions
@@ -1847,20 +1847,23 @@ rb_str_hash_m(VALUE str) int rb_str_comparable(VALUE str1, VALUE str2) { - int idx1 = ENCODING_GET(str1); - int idx2 = ENCODING_GET(str2); + int idx1, idx2; int rc1, rc2; + if (RSTRING_LEN(str1) == 0) return Qtrue; + if (RSTRING_LEN(str2) == 0) return Qtrue; + idx1 = ENCODING_GET(str1); + idx2 = ENCODING_GET(str2); if (idx1 == idx2) return Qtrue; rc1 = rb_enc_str_coderange(str1); rc2 = rb_enc_str_coderange(str2); if (rc1 == ENC_CODERANGE_7BIT) { if (rc2 == ENC_CODERANGE_7BIT) return Qtrue; - if (rb_enc_asciicompat(rb_enc_from_index(idx1))) + if (rb_enc_asciicompat(rb_enc_from_index(idx2))) return Qtrue; } if (rc2 == ENC_CODERANGE_7BIT) { - if (rb_enc_asciicompat(rb_enc_from_index(idx2))) + if (rb_enc_asciicompat(rb_enc_from_index(idx1))) return Qtrue; } return Qfalse; |