僕はここだ!

読書記録とか、ポエムとか、メモとか、コードスニペットとか。まとまったのはQiitaにも書きます。(http://qiita.com/RyotaMurohoshi) 掲載内容は個人の見解であり、所属する企業を代表するものではありません。

.NET Foundationが一つ、Rx.NETにほんのちょっと、ちょっとだけContributeした

 .NET Foundationの一つである、Rx.NETにPull Request送ってそれが取り込まれました。

 やったね、これで俺も.NET Founcation contributor!!!

 と、言っても非常に非常に小さく、ごくまれに発生するコーナーケースのバグフィックスですが。。。あと、Rx.NETでなく、Ix.NETですが。

 Pull Requestはこちら、「Fix Ix Catch method invalid behaviour with Array. #171

 修正前は、Ix.NETのCatchメソッドを配列で呼び出した場合、想定外の例外が発生していました。修正前は次のテストに失敗していました。

[TestMethod]
public void Catch5_Array()
{
    var xss = new[] { new[] { 0, 1, 2, 3, 4 }, new[] { 5, 6, 7, 8, 9 } };
    var res = EnumerableEx.Catch(xss);
    Assert.IsTrue(res.SequenceEqual(Enumerable.Range(0, 5)));
}

 原因は、「 IEnumerator、MoveNext()がfalseを返す状態でCurrentにアクセスした際の挙動は未定義」で書いたことに関連します。IxのCatchメソッド内のIEnumerator<T>のMoveNext()とCurrent周りのコードを修正しました。

 こんなコーナーケース、自分でもよく発見したなって思います。「ix_example」っていうリポジトリで、Ix.NETのサンプルコード集を作っている時に気が付きました。

 ちなみに、Pull Requestを送って2カ月近く無反応だったんで取り込まないかと思っていました。送ったPull Request内容も修正が必要だったり、Rebaseミスったりしてしまったりしたので、次はもう少しうまくやりたいです。

 とは言え、どんな細かいことでも、Rx.NETそして.NET Foundationに貢献できてうれしいです。