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) 컬러 자원을 사용하지 않으므로 즉각적인 자원 고갈 위험이 없습니다.