こんにちわ、サイロスです。

Ruby1.9.1の拡張ライブラリの件で恐縮ですが、Fiber拡張ライブラリで問題と見
受けられる箇所を見つけましたのでご報告いたします。

Fiber#alive?メソッドで、真を返すときに、trueではなく数値の0を返していま
す(偽のときはfalseを返しています)。

問題を再現したスクリプトを添付いたします。

(ここから)
require 'fiber'

fr = Fiber.new{
  "a"
}

a = fr.alive?
p a         # => 0
p a.class   # => Fixnum
fr.resume
a = fr.alive?
p a         # => false
p a.class   # => FalseClass
(ここまで)

MSYS上で独自にビルドしたRuby1.9.1、artonさんによるmswin32版バイナリで確
認いたしました。

ソース(cont.c)を見た限り、918行目の返却値をそのまま返していることが原因
と考えられます。

    return fib->status != TERMINATED;

以上、ご報告まで。
よろしくお願い致します。

<=====>
サイロス誠
cyross / po.twin.ne.jp
http://www.twin.ne.jp/~cyross/Miyako
http://d.hatena.ne.jp/cyross/
<=====>