From: "NARUSE, Yui" Date: 2008-02-16T19:02:41+09:00 Subject: [ruby-dev:33811] Re: [ruby-cvs:22744] Ruby:r15507 (trunk): * string.c (str_strlen): little more optimize. 成瀬です。 Tanaka Akira wrote: > In article <200802160930.m1G9U5cI009381@ci.ruby-lang.org>, > naruse@ruby-lang.org writes: > >> naruse 2008-02-16 18:30:03 +0900 (Sat, 16 Feb 2008) >> >> New Revision: 15507 >> >> Modified files: >> trunk/ChangeLog >> trunk/string.c >> >> Log: >> * string.c (str_strlen): little more optimize. >> (rb_enc_nth): remove needless variable 'c'. > > これにより、valid_encoding? でない文字列が length を呼び出す > と valid_encoding? に変わるようになっています。 > > % ./ruby -ve ' > s = "\x80".force_encoding("euc-jp") > p s.valid_encoding? > p s.length > p s.valid_encoding? > p s > ' > ruby 1.9.0 (2008-02-16 revision 15507) [i686-linux] > false > 1 > true > "\x80" > > "\x80" は EUC-JP として正しくありませんから、この結果は間違っ > ているのではないでしょうか。 あー、なるほど、ここでは rb_enc_precise_mbclen 呼んでなかったんですね。 うーん、とりあえず戻して考えます。 -- NARUSE, Yui DBDB A476 FDBD 9450 02CD 0EFC BCE3 C388 472E C1EA