From: nobu.nakada@... Date: 2003-01-10T19:23:00+09:00 Subject: [ruby-dev:19352] Re: [BUG] errno == 0 なかだです。 At Fri, 10 Jan 2003 14:41:21 +0900, U.Nakamura wrote: > | というか、改行コードがLFのファイルをテキストモードで開いてseek > | すると、msvcrtでもおかしくなりませんか。バッファに読み込んだ時 > | 点でCRが削られたのか最初からなかったのか分からないはずなので、 > | どうしようもない話なのかも知れませんが。 > > 先のパッチのはmswin32では試しませんでした... > # そういう話であってます? あってると思います。 > MSVCRT.dllの話をすると、fseek(fp, 0, SEEK_CUR) である限りは > 問題はないように見えます。なんか見落としてるのかな。 [ruby-dev:19347]だと、bccとはやや場所が違うものの、mingwでも mswinでもやはり同じようにロードに失敗しました。 FILE*でのポインタよりもOSレベルでのポインタのほうがバッファに残っ ている分だけ先に進んでいるはずですが、それを逆算するときに存在 しなかったはずのCRの分だけ余分に戻ってしまい、おなじところを読 み続けてエラーになるようです。 > | > 話をbccだけに限ると、下記のパッチぐらいで誤魔化せるみたいで > | > はありますが... > | > | うーん、bccでもNEED_IO_FLUSH_BEFORE_SEEKは必要ないようなので、 > | fseek()の中でfflush()してるような気がします。とすれば、これは実 > | 際には、(エラーを無視するということを除いて)flushの後は必ずseek > | するというのと等価なのでしょうか。 > > 正直、なんでこうなるのかさっぱりわかってません。 > ランタイムのソースがあればいいのに。昔はあったんだけどなぁ。 公開されてても、VCのくらい読みづらいとなくても一緒のような。 -- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦