ruby-changes:2657
From: ko1@a...
Date: 9 Dec 2007 11:29:50 +0900
Subject: [ruby-changes:2657] nobu - Ruby:r14148 (trunk): * string.c (tr_trans): get rid of segfaults when has mulitbytes but
nobu 2007-12-09 11:29:24 +0900 (Sun, 09 Dec 2007) New Revision: 14148 Modified files: trunk/ChangeLog trunk/bootstraptest/test_knownbug.rb trunk/string.c trunk/test/ruby/test_m17n.rb Log: * string.c (tr_trans): get rid of segfaults when has mulitbytes but source sets have no mulitbytes. http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/string.c?r1=14148&r2=14147 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ChangeLog?r1=14148&r2=14147 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/test/ruby/test_m17n.rb?r1=14148&r2=14147 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/bootstraptest/test_knownbug.rb?r1=14148&r2=14147 Index: ChangeLog =================================================================== --- ChangeLog (revision 14147) +++ ChangeLog (revision 14148) @@ -1,3 +1,8 @@ +Sun Dec 9 11:29:23 2007 Nobuyoshi Nakada <nobu@r...> + + * string.c (tr_trans): get rid of segfaults when has mulitbytes but + source sets have no mulitbytes. + Sun Dec 9 04:01:28 2007 Tanaka Akira <akr@f...> * encoding.c (rb_enc_mbclen): return 1 if underlying implementation Index: bootstraptest/test_knownbug.rb =================================================================== --- bootstraptest/test_knownbug.rb (revision 14147) +++ bootstraptest/test_knownbug.rb (revision 14148) @@ -162,11 +162,3 @@ s = "\xa3\xb0\xa3\xb1\xa3\xb1\xa3\xb3\xa3\xb4".force_encoding("euc-jp") s.squeeze == "\xa3\xb0\xa3\xb1\xa3\xb3\xa3\xb4".force_encoding("euc-jp") } - -assert_normal_exit %q{ - "\x81\x41".force_encoding("shift_jis").tr("A", "B") -} - -assert_normal_exit %q{ - "\x81\x41".force_encoding("shift_jis").tr_s("A", "B") -} Index: string.c =================================================================== --- string.c (revision 14147) +++ string.c (revision 14148) @@ -3466,7 +3466,7 @@ v = trans[c] >= 0 ? trans[c] : Qnil; } else { - v = rb_hash_aref(hash, INT2NUM(c)); + v = hash ? rb_hash_aref(hash, INT2NUM(c)) : Qnil; } if (!NIL_P(v)) { if (!cflag) { @@ -3531,7 +3531,7 @@ v = trans[c] >= 0 ? trans[c] : Qnil; } else { - v = rb_hash_aref(hash, INT2NUM(c)); + v = hash ? rb_hash_aref(hash, INT2NUM(c)) : Qnil; } if (!NIL_P(v)) { if (!cflag) { Index: test/ruby/test_m17n.rb =================================================================== --- test/ruby/test_m17n.rb (revision 14147) +++ test/ruby/test_m17n.rb (revision 14148) @@ -483,4 +483,10 @@ assert_raise(SyntaxError) { eval(s(%{/\\u{6666}#{}\\xc2\\xa0/})) } assert_nothing_raised { eval(u(%{/\\u{6666}#{}\\xc2\\xa0/})) } end + + def test_tr + s = "\x81\x41".force_encoding("shift_jis") + assert_equal(s.tr("A", "B"), s) + assert_equal(s.tr_s("A", "B"), s) + end end -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml