From: "U.Nakamura" Date: 2004-03-09T12:01:08+09:00 Subject: [ruby-dev:23181] test/scanf/test_scanf.rbで[BUG] こんにちは、なかむら(う)です。 しばらく前から、mswin32版でtest/scanf/test_scanf.rbが [BUG] rb_sys_fail(iotest.dat) - errno == 0 で落ちてしまうのでいろいろ調べていましたが、ANSI(ISO/JIS) Cの 範囲においては、 (1) lib/scanf.rb内のIO#soak_up_spacesで、パターンによっては複 数回ungetc(3)が呼び出されるが、そもそも間にfseek,fsetpos, rewideを挟まずに複数回ungetcを呼び出した場合は成功するこ とは保証されておらず、 (2) また、ungetc(3)がerrnoをセットするという規定はない(しても いいけどする必要はない) というわけで、scanf.rbのIO#soak_up_spacesがこのままでいいかど うか、という問題と、io.cのrb_io_ungetcの中でrb_sys_failを呼ん でいる部分をどうするか、という問題があります。 (1)については、SUSv3では読み込みを挟むだけでよいようなので、 「そんな処理系が悪いからporterがなんとかせい」でもいいかもし れません。 (2)はSUSv3でも規定はないので、どうにかしないといけないと思わ れます。 それでは。 -- U.Nakamura