まつもと ゆきひろです

In message "[ruby-dev:22452] Re: Dir.glob  とShjift_JIS について"
    on 03/12/30, H.Yamamoto <ocean / m2.ccsnet.ne.jp> writes:

|すみません、1.8.1に対してです。

あれ、当たらなかったような。もういちどdir.cをまっさらにして
やり直してみます。

|>|ようやく完成品といえるようなパッチになったと思っています。
|
|これは取り消します・・・・。また問題がありました。
|
|glob_helperのreaddirループの中で、
|
|else if (m[1] == '\0' && is_dir == ok) { /* *m == '/' */
|
|としてますが、ブロック実行中にディレクトリが削除されたりすると、
|存在しないパスがブロックに渡されてしまいます。難しい・・・
|
|でも、win32\win32.cの実装も、opendirの後にエントリを削除したら
|似た問題が生じるので、dir.cでも気にする必要ないのでしょうか?
|それなら、もっと簡単にdir.cを実装できると思いますが・・・

繰り返しの最中にファイルが削除・追加された場合の挙動は未定義
ではないかと。ということは、落ちたりしなければ実装者の都合の
良いように作ってよいように思います。もっともその前にほんとう
に未定義かどうか確認する必要がありますが。