私はすぐに答えを見つけました。
私が最初にしたことは、投げられているエラーのルビーソースコードを検索することでした。私はregex.hがこれを担当していることがわかりました。 regex.hで
、コードの流れは次のようなものです:
/* Maximum number of duplicates an interval can allow. */
#ifndef RE_DUP_MAX
#define RE_DUP_MAX ((1 << 15) - 1)
#endif
さてここで問題がRE_DUP_MAXです。 AIXボックスでは、同じ定数が/ usr/includeのどこかで定義されています。私はそれを探して見つけました。
/usr/include/NLregexp.h
/usr/include/sys/limits.h
/usr/include/unistd.h
3つのうちどれが使用されているのかよくわかりません(おそらくNLregexp.h)。これらのヘッダーでは、RE_DUP_MAXの値は255に設定されています。だから正規表現の繰り返し数に置かれた上限がある!
つまり、regex.hで定義した値よりもシステム定義の値をとっているのです。
そこで問題は、regex.h すなわち
# ifdef RE_DUP_MAX
# undef RE_DUP_MAX
# endif
# define RE_DUP_MAX ((1 << 15) - 1)
乾杯でRE_DUP_MAXの値を再割り当てすることによって解決しました!
さて、あなたは確かにRubyの人々にパッチを提出する必要があります!当然、システムのRE_DUP_MAXを使用するつもりでない限り...(また、チェックマークを使用して質問に回答することをお勧めします) –
私は以前同様の問題を抱えており、見つかったのと同じ原因を発見しました。私の場合、CFLAGSに「-DRE_DUP_MAX = 32767」を追加しました。 configureスクリプトがCFLAGSの独自の値を導き出すのが良いとは限りません。 – graza
@graza定数が複数のヘッダファイルで定義されている場合、問題が発生します。どちらが先に来るかが決まります。ヘッダーは他のヘッダーや要素に含まれる可能性があるため、これはCFLAGSによって制御されない場合があります。とにかく情報のためのおかげで! :) – Ricketyship