こんにちは、なかむら(う)です。

In message "[ruby-dev:36704] Assertion failed in array.c on mswin32 Ruby (trunk)"
    on Oct.11,2008 07:31:17, <masaki.suketa / nifty.ne.jp> wrote:
> mswin32版 Ruby(trunk) で nmake すると1回目はすんなり最後まで
> コンパイル、リンクできるのですが、1回目の直後にもう一度
> nmake すると array.c の 150行目で Assertion failed
> が発生します。

VC++6でも再現しないんですよねえ。


で、なんとなく以下のパッチで問題は回避できるような気がするん
ですが、なんでこれで直るのかは真面目に考えてないのでわかりま
せん。
# RESIZE_CAPA()の中でARY_SET_LEN()するパスがあるのもどうも気
# にかかるんですが...

Index: array.c =================================================================== --- array.c (revision 19786) +++ array.c (working copy) @@ -2927,10 +2927,10 @@ rb_ary_compact_bang(VALUE ary) if (RARRAY_LEN(ary) == n) { return Qnil; } + ARY_SET_LEN(ary, n); if (n * 2 < ARY_CAPA(ary) && ARY_DEFAULT_SIZE * 2 < ARY_CAPA(ary)) { RESIZE_CAPA(ary, n * 2); } - ARY_SET_LEN(ary, n); return ary; }
それでは。 -- U.Nakamura <usa / garbagecollect.jp>