From: "H.Yamamoto" Date: 2003-12-01T10:58:37+09:00 Subject: [ruby-dev:22098] Re: Dir.glob と Shjift_JIS について 山本です。 > 時間が取れなくて、パッチは試せていません。 > こちらでの確認には少し時間がかかるかもしれません。 私もちょっと疲れたので、しばらくペースをゆるめようと思います。 > ruby では、grep locale ruby-1.8.0/{.,*}/*.[ch] した範囲では > setlocale() されていないようですから、ロケールは "C" ですね。 > で、これで気が付いたのですが、MB_CUR_MAX == 1 になり、非 ASCII 文字に > 対する mblen() は常に失敗して -1 を返す、という事はないでしょうか。 > 読み間違いなら良いのですが。 そのとおりでした。mblen("あ", INT_MAX) == 2 なので、INT_MAX を使うのがいいのかもしれません。 (BCB5のヘルプにはMB_CUR_MAXを使う例がのってるのに、釈然としませんが) あと、mblen('\0' を指すポインタ, INT_MAX) == 0 みたいなので、 #elif defined(DJGPP) || defined(__EMX__) # define Next(p) ((p) + mblen(p, MB_CUR_MAX)) #endif の define を # define Next(p) (*(p) ? (p) + mblen(p, INT_MAX) : (p) + 1) としないと動かないかもしれません。