xterm(1) のマニュアルページには次のように指定されています。
なぜならXライブラリの総リソース数に対するハードコーディングされた制限(最大400個)、ワイド文字のサポート、およびluitが有効な場合、256色のリソースは省略されます。一貫性のない動作に加えて、一部のリソースしか許可されていないと、正確なカットオフを決定するのが難しく、リソース数が制限を超えるとXライブラリがクラッシュする傾向があります。パレットはまだ同じデフォルト値に初期化され、制御シーケンスを介して変更できます。
この情報は古いようです。 X.Org 1.12(X11R7)のような最新のX実装では、これが問題であるか(またはもはや問題ではない)ことを確認できる人はいますか?この制限がまだ存在する場合、X11ソースコードでこれを見つける必要がある人は誰ですか?
答え1
どういう意味ですか?xorg/lib/libXt/Resource.c
#define MAXRESOURCES 400
後で同じファイル:
} else if (num_resources >= MAXRESOURCES) {
XtAppWarningMsg(XtWidgetToApplicationContext(widget),
"invalidResourceCount","getResources",XtCXtToolkitError,
"too many resources",
(String *)NULL, (Cardinal *)NULL);
return NULL;
Xorg開発者はアプリケーションがほとんどないため、これを変更する可能性はありません。できるあまりにも多くのリソースを使用してください。
xtermの元の256色スキーム(1999年)各色に別々のリソースを割り当てます。
変更ログパッチ #188 - 2004/5/12 - XFree86 4.4.99.6説明する:
- 16を超える色は通常、Xリソースではないように256色と88色の初期化を変更します。これは、256の色と色の両方が構成されているときにxtermを損傷するXtのハードコーディングされた制限を解決します(Noah Friedmanによる報告)。
レポートにはこれが記載されていますが、luit
それ以外にUTF-8、ロケールなどの他のリソースもあります。時にはいくつかの調整が必要です。パッチ #191 - 2004/6/6 - XFree86 4.4.99.7
OPT_COLOR_RES2
パッチ#188で導入された偽のリソーステーブルが空のときにコンパイルされないようにifdefを変更します。これはgccで動作することです(Joel Konkle-Parkerによる報告)。
- 88色モデルのリソースを有効にして、パッチ#188の回避策を改善しました。
- color16からcolor255までのリソースの制限された可用性は、パッチ#188(Ubuntu#438850)で説明されているように、xtermのマンページに文書化されています。
このプログラムはまだ256の色リソース(UTF-8なし)を使用して構築できますが、今はその頻度が減少します。
健全性チェックと同様に、xtermには次のブロックがあります(デバッグ時にオン)。
TRACE(("VTInitialize wnew %p, %d / %d resources\n",
(void *) wnew, XtNumber(xterm_resources), MAXRESOURCES));
assert(XtNumber(xterm_resources) < MAXRESOURCES);
トレースログの表示
VTInitialize wnew 0xb98a90, 232 / 400 resource
したがって、追加の240(256-16)カラーリソースを使用しないため、即時リソースの枯渇のリスクはありません。