From: Yasuhiro Fukuma Date: 1999-02-12T16:49:11+09:00 Subject: [ruby-dev:5051] [BUG] String#inspect (Re: Ruby 1.3.1-990210) ----Next_Part(Fri_Feb_12_16:48:33_1999_179)-- Content-Type: Text/Plain; charset=iso-2022-jp Content-Transfer-Encoding: 7bit 福間@福岡 です。 76バイト目付近にマルチバイト文字を含む文字列をinspectすると、落ちることが あります: $ ruby-1.3 -ve 'p "\xa4\xa2"*38' ruby 1.3.1(99/02/10) [i386-freebsd3.0] "ああああああああああああああああああああああああああああああああああああああ" $ ruby-1.3 -e 'p "\xa4\xa2"*39' /tmp/rbD29779:1: [BUG] Segmentation fault Abort trap $ ruby-1.3 -e '("a"*74 + "\xa4\xa2"*2).inspect' /tmp/rbw29780:1: [BUG] Segmentation fault Abort trap --- Yasuhiro Fukuma (福間 康弘) as Yasu.F @ Kitakyushu.Fukuoka.Japan Web site: http://www8.big.or.jp/~yasuf/ “君の主人公は君だ。” ----Next_Part(Fri_Feb_12_16:48:33_1999_179)-- Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename=string.c.diff --- string.c.orig Tue Feb 9 15:08:23 1999 +++ string.c Fri Feb 12 16:16:47 1999 @@ -1365,11 +1365,11 @@ while (p < pend) { char c = *p++; if (ismbchar(c) && p < pend) { - int len = mbclen(c)-1; + int len = mbclen(c); CHECK(len); *b++ = c; - while (len--) { + while (--len) { *b++ = *p++; } } ----Next_Part(Fri_Feb_12_16:48:33_1999_179)----