まつもと ゆきひろです

In message "[ruby-dev:22734] Re: can't require"
    on 04/01/28, H.Yamamoto <ocean / m2.ccsnet.ne.jp> writes:

|>文字列定数の型はconst char*ではなくchar*ですが、その内容を変
|>更した場合の挙動は未定義です。落ちるのは運がよい方だと思いま
|>すが。
|
|「文字列定数の型」というのは、rubyの型のことでしょうか?

Cの話です。

|rb_glob2(char *path, ....)
|{
|    glob_helper(path, ....); /* この中で、if (!(flags & FNM_NOESCAPE)) remove_backslashes(path) */
|}
|
|となっているので、もしかすると remove_backslashes(path) は意図された動作で、
|そのために const char * になってないのではと思った次第です。

そういう意味ならば仕様です。

|できれば
|
|rb_glob2(const char *path, ....)
|{
|    n = root - path;
|    buf = ALLOC_N(char, n+1);
|    memcpy(buf, path, root - path);
|    buf[n] = '\0';
|
|    glob_helper(buf, ....);
|}
|
|としたいのですが、問題ないでしょうか?

それで良いんじゃないでしょうか。見落としがあるかな。