Você está se referindo a xorg / lib / libXt / Resource.c
#define MAXRESOURCES 400
usado posteriormente no mesmo arquivo :
} else if (num_resources >= MAXRESOURCES) {
XtAppWarningMsg(XtWidgetToApplicationContext(widget),
"invalidResourceCount","getResources",XtCXtToolkitError,
"too many resources",
(String *)NULL, (Cardinal *)NULL);
return NULL;
É improvável que os desenvolvedores do Xorg mudem isso porque poucos aplicativos poderiam usar muitos recursos.
O esquema original para 256 cores no xterm (em 1999 ) atribuiu um recurso separado para cada cor.
O changelog do Patch # 188 - 2004/5/12 - XFree86 4.4.99.6 diz:
- modify initialization of 256- and 88-colors so that colors beyond 16 are normally not X resources. This works around a hard-coded limit in Xt which breaks xterm when 256-colors and luit are both configured (report by Noah Friedman).
O relatório mencionou luit
, mas junto com isso, havia outros recursos para UTF-8, localidade, etc. Algum ajuste é necessário ocasionalmente, por exemplo, Correção # 191 - 2004/6/6 - XFree86 4.4.99.7
- fix ifdef's for
OPT_COLOR_RES2
so that the fake resource table introduced in patch #188 is not compiled if it is empty. This happened to work with gcc (report by Joel Konkle-Parker).
- improve the workaround from patch #188 by enabling resources for the 88-color model.
- document in xterm manpage the limited availability of resources color16 to color255 as noted in patch #188 (Ubuntu #438850).
O programa ainda pode ser construído com recursos de 256 cores (e sem UTF-8), mas isso é feito com menos frequência agora.
Assim como uma verificação de sanidade, o xterm tem esse fragmento (ativado ao depurar):
TRACE(("VTInitialize wnew %p, %d / %d resources\n",
(void *) wnew, XtNumber(xterm_resources), MAXRESOURCES));
assert(XtNumber(xterm_resources) < MAXRESOURCES);
e o log de rastreamento mostra
VTInitialize wnew 0xb98a90, 232 / 400 resource
Portanto, não há risco imediato de ficar sem recursos, agora que os recursos extras de 240 (256-16) cores não são usados.