まつもと ゆきひろです

In message "Re: [ruby-dev:36745] Re: Assertion failed in array.c on mswin32 Ruby (trunk)"
    on Wed, 15 Oct 2008 18:43:11 +0900, "U.Nakamura" <usa / garbagecollect.jp> writes:

|一つ前のパッチ([ruby-dev:36735])がそのバグを潰しているパッチ
|です。
|で、lenより短いcapacityでRESIZE_CAPA()を呼び出すのがバグであ
|るならそれをコードで表現すればよいと思うのですが、わざわざ該
|当部には元々lenを変更するコードも入っているため、元のコードの
|意図がわからないので確認したかったのです。

すいません。意図がわかってなくて。ってか、まだわかってないよ
うな気がします。

|で、先のパッチはlenを変更しようとしてるんだからRESIZE_CAPA()
|に必要ならばlenを変更する機能も与えようとしてるんだと解釈して
|作成したわけですが、

RESIZE_CAPA()の中のARY_SET_LEN(ary, len);があることを気にし
ていらっしゃるんでしょうか。このケースはresizeの結果embedす
るサイズになったために発生しているので(embedではsizeを指定し
ないわけにはいかない)、RESIZE_CAPA()にlenを変更する機能を与
えようとしているというのは適切ではないかもしれません。

|> とりあえず、このパッチをコミットしていただいても構いません。
|
|私の好みを言えば、[BUG]で殺す方がいいんじゃないかと思います。
|# 元のコードを書いたyuguiさんの趣味を尊重するとassert()ですか
|# ね。

その辺はおまかせします。