From: KIMURA Koichi Date: 2007-10-04T12:52:40+09:00 Subject: [ruby-dev:31934] Do ruby 1.9 require C99 compliant compiler? 木村です。 まつもとさんコミットの以下の二点の修正で、C99でないCコンパイラで コンパイルできなくなっています。 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/array.c?r1=13588&r2=13590 rb_ary_permutation(VALUE ary, VALUE num) { RETURN_ENUMERATOR(ary, 1, &num); /* Return enumerator if no block */ long r = NUM2LONG(num); /* Permutation size from argument */ http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/array.c?r1=13591&r2=13598 static VALUE rb_ary_product(int argc, VALUE *argv, VALUE ary) { int n = argc+1; /* How many arrays we're operating on */ VALUE arrays[n]; /* The arrays we're computing the product of */ int counters[n]; /* The current position in each one */ VALUE result; /* The array we'll be returning */ 前者はローカル変数の宣言の前に実行文(do {})があるため、後者は 可変長配列を使っているためですが、前者はともかく後者はどうしたものでしょ うか? 安易に alloca(かそのラッパー)を使うとまたsegvの元になるでしょうし。 -- 木村浩一