[#19261] lstripped here-document (Re: comments and continuing strings on the next line) — nobu.nakada@...

なかだです。

29 messages 2003/01/01
[#19360] Re: lstripped here-document (Re: comments and continuing strings on the next line) — "K.Kosako" <kosako@...> 2003/01/15

nobu.nakada@nifty.ne.jpさんの

[#19361] Re: lstripped here-document (Re: comments and continuing strings on the next line) — "NAKAMURA, Hiroshi" <nakahiro@...> 2003/01/15

なひです。

[#19364] Re: lstripped here-document (Re: comments and continuing strings on the next line) — nobu.nakada@... 2003/01/17

なかだです。

[#19366] Re: lstripped here-document (Re: comments and continuing strings on the next line) — "NAKAMURA, Hiroshi" <nakahiro@...> 2003/01/17

なひです。

[#19299] [BUG] errno == 0 — Kazuhiro Yoshida <moriq@...>

もりきゅうです。win32だけかもしれません。

22 messages 2003/01/04
[#19301] Re: [BUG] errno == 0 — "U.Nakamura" <usa@...> 2003/01/04

こんにちは、なかむら(う)です。

[#19302] Re: [BUG] errno == 0 — "U.Nakamura" <usa@...> 2003/01/04

こんにちは、なかむら(う)です。

[#19303] Re: [BUG] errno == 0 — "U.Nakamura" <usa@...> 2003/01/04

こんにちは、なかむら(う)です。

[#19304] Re: [BUG] errno == 0 — "U.Nakamura" <usa@...> 2003/01/04

こんにちは、なかむら(う)です。

[#19306] Re: [BUG] errno == 0 — nobu.nakada@... 2003/01/05

なかだです。

[ruby-dev:19349] Re: [BUG] errno == 0

From: nobu.nakada@...
Date: 2003-01-10 04:51:59 UTC
List: ruby-dev #19349
なかだです。

At Fri, 10 Jan 2003 12:24:02 +0900,
U.Nakamura <usa@osb.att.ne.jp> wrote:
> | > | | しかし、これはひょっとしてFMODE_SYNCだとseekされてないんじゃな
> | > | | いでしょうか。フラグを流用した無理が出たような。別のフラグを使
> | > | | うべきか、それともFMODE_SYNCだったらついでにseekするか。
> | > | 
> | > | # ただ、bccの場合はW -> Rもflushじゃだめなんじゃないか疑惑が
> | > | # あるので、結局なんとかしないといけないのかも。
> | > | # 後で確認してみます。
> | > 
> | > 予想通り、
> | >   ruby 1.8.0 (2003-01-09) [i386-bccwin32]
> | > では、FMODE_SYNCなときはW -> Rで落ちました。
> | 
> | 1.8.0だけですか?
> 
> 1.6にはbccwin32はまだマージされてないので...

そりゃそうでした。

> で、今回のパッチですが、1.8 on bccwin32ではminirubyが発狂し
> ました。
>   D:/ruby/src/mkconfig.rb:1668: yacc stack overflow
> とか言われてしまったので、どうも普通にファイルを読むだけで
> おかしくなってるみたいです

[ruby-dev:19347]はカッコが抜けてました。これで連続する読み込み
でseekすることはないはずです。

というか、改行コードがLFのファイルをテキストモードで開いてseek
すると、msvcrtでもおかしくなりませんか。バッファに読み込んだ時
点でCRが削られたのか最初からなかったのか分からないはずなので、
どうしようもない話なのかも知れませんが。

> 話をbccだけに限ると、下記のパッチぐらいで誤魔化せるみたいで
> はありますが...

うーん、bccでもNEED_IO_FLUSH_BEFORE_SEEKは必要ないようなので、
fseek()の中でfflush()してるような気がします。とすれば、これは実
際には、(エラーを無視するということを除いて)flushの後は必ずseek
するというのと等価なのでしょうか。


Index: io.c
===================================================================
RCS file: /cvs/ruby/src/ruby/io.c,v
retrieving revision 1.178
diff -u -2 -p -r1.178 io.c
--- io.c	9 Jan 2003 08:20:32 -0000	1.178
+++ io.c	10 Jan 2003 04:36:42 -0000
@@ -214,4 +214,6 @@ flush_before_seek(fptr)
 #endif
 
+#define FMODE_SYNCWRITE (FMODE_SYNC|FMODE_WRITABLE)
+
 void
 rb_io_check_readable(fptr)
@@ -222,5 +224,7 @@ rb_io_check_readable(fptr)
     }
 #if NEED_IO_SEEK_BETWEEN_RW
-    if ((fptr->mode & FMODE_WBUF) && !fptr->f2) {
+    if (((fptr->mode & FMODE_WBUF) ||
+	 (fptr->mode & (FMODE_SYNCWRITE|FMODE_RBUF)) == FMODE_SYNCWRITE) &&
+	!fptr->f2) {
 	io_seek(fptr, 0, SEEK_CUR);
     }


-- 
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
    中田 伸悦

In This Thread