From: GOTOU Yuuzou Date: 2004-12-25T03:28:39+09:00 Subject: [ruby-dev:25314] Re: test_readline.rb blocks on BSD again In message <20041224.131211.846943951.gotoyuzo@sawara.does.notwork.org>, `GOTOU Yuuzou ' wrote: > In message <20041223175402.3116FC6718@lithium.ruby-lang.org>, > `nobu@ruby-lang.org (nobu)' wrote: > > Log: > > * io.c (io_reopen, rb_io_reopen): prohibit to change access mode for > > special IO ports. [ruby-dev:25225] > > > 1.246.2.66 +34 -24 ruby/io.c > > http://www.ruby-lang.org/cgi-bin/cvsweb.cgi/ruby/io.c?cvsroot=src&r1=1.246.2.65&r2=1.246.2.66 > > 調べ切れてないので報告だけですが、このコミットからNetBSDで > test/readlineがうまく動かなくなっているようです。 その後つらつらと眺めてみたのですが、FMODE_PREPがクリアされて いる(ないしは余計に伝わっている)ようです。 -- ごとうゆうぞう Index: io.c =================================================================== RCS file: /var/cvs/src/ruby/io.c,v retrieving revision 1.246.2.66 diff -u -p -F^[^A-Za-z0-9_+-]*\(class\|module\|def\)[^A-Za-z0-9_+-] -r1.246.2.66 io.c --- io.c 23 Dec 2004 17:53:58 -0000 1.246.2.66 +++ io.c 24 Dec 2004 18:21:35 -0000 @@ -3179,7 +3179,7 @@ io_reopen(io, nfile) } /* copy OpenFile structure */ - fptr->mode = orig->mode; + fptr->mode = orig->mode | (fptr->mode & FMODE_PREP); fptr->pid = orig->pid; fptr->lineno = orig->lineno; if (fptr->path) free(fptr->path); @@ -3358,7 +3358,7 @@ rb_io_init_copy(dest, io) } /* copy OpenFile structure */ - fptr->mode = orig->mode; + fptr->mode = orig->mode & ~FMODE_PREP; fptr->pid = orig->pid; fptr->lineno = orig->lineno; if (orig->path) fptr->path = strdup(orig->path);