まつもと ゆきひろです

In message "[ruby-dev:14614] 大小文字を無視した比較で ' 帰 ' == ' 蟻 ' ?"
    on 01/09/02, K.Umakoshi <pegacorn / jcom.home.ne.jp> writes:
|
|思うところあって ruby_m17n を見てたんですが、
|String#<=> のバグを見つけました。
|# で、今日初めて ruby-dev / ruby-lang.org に登録しました。(^^;

ありがとうございます。

|一応私なりに直してみて、期待通り動いてます。
|# 仕様を把握していないので仕様が間違ってるかも…

パッチありがとうございます。思うところあって違う修正をしまし
た。こんな感じでどうでしょう?

m17n_memcmp(p1, p2, len, enc)
    const char *p1, *p2;
    long len;
    const m17n_encoding *enc;
{
    int tmp, clen, a, b;

    while (len > 0) {
	clen = m17n_mbclen(enc, *p1);
	if (clen != m17n_mbclen(enc, *p2))
	    return ((unsigned)*p1 - (unsigned)*p2);
	len -= clen;
	a = m17n_codepoint(enc, p1, p1+clen);
	b = m17n_codepoint(enc, p2, p2+clen);
	if (tmp = m17n_toupper(enc, (unsigned)a) -
	          m17n_toupper(enc, (unsigned)b))
	    return tmp;
    }
    return 0;
}