[#24698] NKF(nkf2)を1.8ブランチに入れました — "NARUSE, Yui" <naruse@...>

naruseです。

14 messages 2004/11/03
[#24734] Re: NKF(nkf2)を1.8ブランチに入れました — 堀川 久 <vzw00011@...> 2004/11/06

こんにちは。

[#24720] メール関係ライブラリの標準添付について — MoonWolf <moonwolf@...>

MoonWolfです。

17 messages 2004/11/05
[#24721] Re: メール関係ライブラリの標準添付について — Yukihiro Matsumoto <matz@...> 2004/11/05

まつもと ゆきひろです

[#24722] Re: メール関係ライブラリの標準添付について — MoonWolf <moonwolf@...> 2004/11/05

MoonWolfです。

[#24804] Re: まつもとさんの負担を減らすために、何ができるだろう — "URABE Shyouhei aka.mput" <root@...>

mput です。 ruby-dev に移動します。

21 messages 2004/11/13
[#24805] Re: まつもとさんの負担を減らすために、何ができるだろう — Tanaka Akira <akr@...17n.org> 2004/11/13

In article <2D6284E3-351D-11D9-B7EF-000393735AAE@mput.dip.jp>,

[#24806] Re: まつもとさんの負担を減らすために、何ができるだろう — "URABE Shyouhei aka.mput" <root@...> 2004/11/13

mput です。

[#24808] Re: まつもとさんの負担を減らすために、何ができるだろう — Masayoshi Takahashi <maki@...> 2004/11/13

高橋征義です。

[#24809] Re: まつもとさんの負担を減らすために、何ができるだろう — "URABE Shyouhei aka.mput" <root@...> 2004/11/13

mput です。

[#24834] Process.getrlimit and Process.setrlimit — Tanaka Akira <akr@...17n.org>

Process.getrlimit と Process.setrlimit が欲しいので実装してみました。

25 messages 2004/11/13

[#24965] sync and stdio buffering — Tanaka Akira <akr@...17n.org>

ちょっとした思いつきなのですが、

12 messages 2004/11/26

[#24993] rb_io_sysread dumps core [BUG] rb_sys_fail() - errno == 0 — Tietew <tietew-ml-ruby-dev@...>

ソケットとスレッドを大量に使うアプリ(具体的には IRCbot です)を

13 messages 2004/11/29

[#25003] IO#flush dumps core again — Tanaka Akira <akr@...17n.org>

次のようにすると core を吐きます。

28 messages 2004/11/30
[#25004] Re: IO#flush dumps core again — nobu@... 2004/11/30

なかだです。

[#25005] Re: IO#flush dumps core again — Yukihiro Matsumoto <matz@...> 2004/11/30

まつもと ゆきひろです

[#25009] Re: IO#flush dumps core again — Tanaka Akira <akr@...17n.org> 2004/12/01

In article <1101836040.635395.27476.nullmailer@x31.priv.netlab.jp>,

[#25014] Re: IO#flush dumps core again — Tanaka Akira <akr@...17n.org> 2004/12/01

In article <1101878558.979715.1359.nullmailer@x31.priv.netlab.jp>,

[#25015] Re: IO#flush dumps core again — Yukihiro Matsumoto <matz@...> 2004/12/01

まつもと ゆきひろです

[#25056] Re: IO#flush dumps core again — Tanaka Akira <akr@...17n.org> 2004/12/05

In article <1101888165.570792.4192.nullmailer@x31.priv.netlab.jp>,

[#25074] Re: IO#flush dumps core again — Tanaka Akira <akr@...17n.org> 2004/12/06

In article <1102293033.356112.2288.nullmailer@x31.priv.netlab.jp>,

[ruby-dev:24986] Re: sync and stdio buffering

From: Tanaka Akira <akr@...17n.org>
Date: 2004-11-28 16:44:56 UTC
List: ruby-dev #24986
In article <87zn1377ob.fsf@serein.a02.aist.go.jp>,
  Tanaka Akira <akr@m17n.org> writes:

>> が、勘違いしている可能性のある私が書くよりも田中さんが直接書
>> いた方が効率的だと思います。[ruby-dev:24967]のコードをベース
>> に田中さんがコミットしていただけませんでしょうか。
>
> そうしてみました。1.8 にもいれました。

read buffer が空でないときに write すると、read buffer を空にしないま
まに書き込んでしまう可能性を忘れていたため、次の変更を行いました。

Index: io.c
===================================================================
RCS file: /src/ruby/io.c,v
retrieving revision 1.333
diff -u -p -r1.333 io.c
--- io.c	27 Nov 2004 14:08:19 -0000	1.333
+++ io.c	28 Nov 2004 16:17:42 -0000
@@ -261,11 +261,10 @@ rb_io_check_writable(fptr)
     if (!(fptr->mode & FMODE_WRITABLE)) {
 	rb_raise(rb_eIOError, "not opened for writing");
     }
-#if NEED_IO_SEEK_BETWEEN_RW
-    if ((fptr->mode & FMODE_RBUF) && !feof(fptr->f) && !fptr->f2) {
+    if ((fptr->mode & FMODE_RBUF) && !feof(fptr->f) && !fptr->f2 &&
+        READ_DATA_PENDING(fptr->f)) {
 	io_seek(fptr, 0, SEEK_CUR);
     }
-#endif
     if (!fptr->f2) {
 	fptr->mode &= ~FMODE_RBUF;
     }

(sync なときには) もはや stdio を通さずに write するので、stdio が
書き込む前に自動的に read buffer 中の余計に読んだ部分を捨てて file
offset を戻してくれるのを頼るわけにはいきません。

というわけで、自前で read buffer を空にするコードを
NEED_IO_SEEK_BETWEEN_RW に関わらず有効にしました。

ただ、read buffer が空の時に seek するのは無駄だと思うので、
READ_DATA_PENDING を使って read buffer が空でない時という制約を加えて
あります。

この変更を sync のときだけに限定するかしないかは迷ったのですが、規格で
はもともと stdio が自動的に read buffer を空にしてくれる保証はないので、
気にせず常にやることにしました。
-- 
[田中 哲][たなか あきら][Tanaka Akira]

In This Thread