* string.c (tr_trans): when the hash for multibyte repl is empty,

tr is inverse mode, and a character doesn't much the table, the
  character should be replaced by last replacement. Bug #4449

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30977 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
naruse 2011-02-28 07:46:49 +00:00
Родитель 3fec2bee37
Коммит 4960e66ab6
3 изменённых файлов: 8 добавлений и 1 удалений

Просмотреть файл

@ -1,3 +1,9 @@
Mon Feb 28 16:28:15 2011 NARUSE, Yui <naruse@ruby-lang.org>
* string.c (tr_trans): when the hash for multibyte repl is empty,
tr is inverse mode, and a character doesn't much the table, the
character should be replaced by last replacement. Bug #4449
Mon Feb 28 16:38:56 2011 Tanaka Akira <akr@fsij.org>
* ext/openssl/ossl_ocsp.c: parenthesize macro arguments.

Просмотреть файл

@ -5060,7 +5060,7 @@ tr_trans(VALUE str, VALUE src, VALUE repl, int sflag)
else c = NUM2INT(tmp);
}
else {
c = errc;
c = cflag ? last : errc;
}
if (c != errc) {
tlen = rb_enc_codelen(c, enc);

Просмотреть файл

@ -962,6 +962,7 @@ class TestM17N < Test::Unit::TestCase
assert_equal("X\u3042\u3044X", "A\u3042\u3044\u3046".tr("^\u3042\u3044", "X"))
assert_equal("\u3042\u3046" * 100, ("\u3042\u3044" * 100).tr("\u3044", "\u3046"))
assert_equal("Y", "\u3042".tr("^X", "Y"))
end
def test_tr_s