[#26266] pragma on ripper — nobuyoshi nakada <nobuyoshi.nakada@...>
なかだです。
こんにちは、なかむら(う)です。
なかだです。
[#26284] ext/tk/sample/tkextlib/tile/demo.rb で TypeError — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
山本です。
[#26298] ext/tk/sample/tkextlib/tile/themes — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
山本です。
[#26305] ext/tk/sample/tkextlib/ICONS/viewIcons.rb — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
山本です。
永井@知能.九工大です.
[#26312] rb_gc_mark_threads spin — Tanaka Akira <akr@...17n.org>
最近、とあるプログラム(五月雨)が、無限ループに陥ることが何回かありました。
なかだです。
In article <TYOMLEM04FRaqbC8wSA00000024@tyomlvem02.e2k.ad.ge.com>,
なかだです。
In article <TYOMLEM04FRaqbC8wSA00000025@tyomlvem02.e2k.ad.ge.com>,
なかだです。
In article <TYOMLEM04Rqf69aZbLA0000002d@tyomlvem02.e2k.ad.ge.com>,
なかだです。
In article <200506101543.j5AFhToG009328@sharui.nakada.niregi.kanuma.tochigi.jp>,
In article <8764wlil9l.fsf@m17n.org>,
なかだです。
In article <200506111335.j5BDZkoG019423@sharui.nakada.niregi.kanuma.tochigi.jp>,
まつもと ゆきひろです
In article <1118583170.298416.26464.nullmailer@x31.priv.netlab.jp>,
まつもと ゆきひろです
In article <1118586617.180748.27381.nullmailer@x31.priv.netlab.jp>,
[#26324] XMLRPC charset — Kazuhiro NISHIYAMA <zn@...>
西山和広です。
[#26358] test failures and errors — Kazuhiro NISHIYAMA <zn@...>
西山和広です。
[#26387] warningを減らす — Kazuhiro NISHIYAMA <zn@...>
西山和広です。
[#26405] WEBrick DoS vulnerability — Tanaka Akira <akr@...17n.org>
NetBSD 2.0 で WEBrick を使って HTTP サーバを動かした場合、クライアント
ごとうゆうぞうです。
In article <20050708.175802.957830318.gotoyuzo@sawara.does.notwork.org>,
In message <87fyupzgcq.fsf@m17n.org>,
In article <20050708.211519.179953950.gotoyuzo@sawara.does.notwork.org>,
In message <87d5ptzdpc.fsf@m17n.org>,
前田です。
In article <42CF1AF2.5000407@ruby-lang.org>,
In message <878y0erpv7.fsf@m17n.org>,
[#26410] irbのlexerが数値認識に失敗 — Kazuhiro NISHIYAMA <zn@...>
西山和広です。
[#26417] test.rb failed 167W: ruby 1.9.0 (2005-06-30) [i686-linux] (boron) — Kazuhiro NISHIYAMA <zn@...>
西山和広です。
[#26421] Subversion — Shugo Maeda <shugo@...>
前田です。
まつもと ゆきひろです
こんにちは、なかむら(う)です。
山本です。
須藤です.
In article <20050703.152549.41008576.kou@cozmixng.org>,
[ruby-dev:26262] Re: IO.select dumps core
In article <200506010140.j511edY4012889@sharui.nakada.niregi.kanuma.tochigi.jp>,
nobu@ruby-lang.org writes:
> こんな感じでしょうか。
基本的な方針は「なぜか余計にメモリを確保しておいて動いたらラッキー」な
ので、今まで参照していなかった FD_SETSIZE は今さら参照しなくても書ける
はずなんじゃないかと思います。
> void
> rb_fd_zero(fds)
> rb_fdset_t *fds;
> {
> if (fds->fdset) {
> MEMZERO(fds->fdset, fd_mask, howmany(fds->maxfd, NFDBITS));
> if (sizeof(fd_set) * CHAR_BIT != howmany(FD_SETSIZE, NFDBITS) * NFDBITS)
> FD_ZERO(fds->fdset);
> }
> }
FD_ZERO による初期状態が 0 の並びでない可能性を考慮するなら、FD_ZERO
は常に行うべきでしょう。
if (fds->fdset) {
MEMZERO(fds->fdset, fd_mask, howmany(fds->maxfd, NFDBITS));
FD_ZERO(fds->fdset);
}
> void
> rb_fd_set(n, fds)
> int n;
> rb_fdset_t *fds;
> {
> int m, o;
>
> if (n < FD_SETSIZE)
> m = sizeof(fd_set);
> else
> m = howmany(n + 1, NFDBITS) * NFDBITS;
> if (fds->maxfd <= FD_SETSIZE)
> o = sizeof(fd_set);
> else
> o = howmany(fds->maxfd, NFDBITS) * NFDBITS;
>
> if (m > o) {
> fds->fdset = realloc(fds->fdset, m);
> memset((char *)fds->fdset + o, 0, m - o);
> }
> if (n >= fds->maxfd) fds->maxfd = n + 1;
> FD_SET(n, fds->fdset);
> }
FD_SETSIZE を避けるならこうかなぁ。
int m, o;
m = howmany(n + 1, NFDBITS) * NFDBITS;
if (m < sizeof(fd_set))
m = sizeof(fd_set);
o = howmany(fds->maxfd, NFDBITS) * NFDBITS;
if (o < sizeof(fd_set))
o = sizeof(fd_set);
if (m > o) {
fds->fdset = realloc(fds->fdset, m);
memset((char *)fds->fdset + o, 0, m - o);
}
if (n >= fds->maxfd) fds->maxfd = n + 1;
FD_SET(n, fds->fdset);
> void
> rb_fd_clr(n, fds)
> int n;
> rb_fdset_t *fds;
> {
> if (n > FD_SETSIZE && n >= fds->maxfd) return;
> FD_CLR(n, fds->fdset);
> }
これもこうですかねぇ。
if (n >= fds->maxfd) return;
FD_CLR(n, fds->fdset);
> int
> rb_fd_isset(n, fds)
> int n;
> const rb_fdset_t *fds;
> {
> if (n > FD_SETSIZE && n >= fds->maxfd) return 0;
> return FD_ISSET(n, fds->fdset);
> }
これも。
if (n >= fds->maxfd) return 0;
return FD_ISSET(n, fds->fdset);
> void
> rb_fd_copy(dst, src, max)
> rb_fdset_t *dst;
> const fd_set *src;
> int max;
> {
> int size = sizeof(fd_set);
> if ((dst->maxfd = max) > FD_SETSIZE) {
> size = howmany(max, NFDBITS) * NFDBITS;
> }
> dst->fdset = realloc(dst->fdset, size);
> memcpy(dst->fdset, src, size);
> }
これはこうかなぁ。
int size = howmany(max, NFDBITS) * NFDBITS;
if (size < sizeof(fd_set))
size = sizeof(fd_set);
dst->fdset = realloc(dst->fdset, size);
memcpy(dst->fdset, src, size);
>> # Windows の fd_set は違うというので探したら、
>> # http://msdn.microsoft.com/library/en-us/winsock/winsock/fd_set_2.asp
>> # を見る限りは MEMZERO だけでよさそうですねぇ。
>
> そもそもwinsockがFD_SETSIZE以上を見てくれるかどうか、というより
> もWaitForMultipleObjects()が見てくれなさげ。
MEMZERO だけでいいというのは、FD_ZERO と同等の効果がありそうだ、という
意味です。
FD_SETSIZE以上のサポートを広げるという意味では、poll にする意味が有る
かというのが興味の有るところなのですが、Windows は救えなさそうですね。
(そもそも Windows に poll があるのかどうか知りませんが)
poll にすれば救える環境って存在するのかなぁ?
--
[田中 哲][たなか あきら][Tanaka Akira]