Xext: panoramix: protect from allocation failures

Handle memory allocations gracefully, instead of just segfaulting.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
This commit is contained in:
Enrico Weigelt, metux IT consult 2025-05-06 17:05:07 +02:00
parent b56b32bba7
commit 3f7370d53f

View File

@ -806,7 +806,6 @@ extern void
PanoramiXConsolidate(void) PanoramiXConsolidate(void)
{ {
int i; int i;
PanoramiXRes *root, *defmap, *saver;
ScreenPtr pScreen = screenInfo.screens[0]; ScreenPtr pScreen = screenInfo.screens[0];
DepthPtr pDepth = pScreen->allowedDepths; DepthPtr pDepth = pScreen->allowedDepths;
VisualPtr pVisual = pScreen->visuals; VisualPtr pVisual = pScreen->visuals;
@ -820,11 +819,23 @@ PanoramiXConsolidate(void)
for (i = 0; i < pScreen->numVisuals; i++) for (i = 0; i < pScreen->numVisuals; i++)
PanoramiXMaybeAddVisual(pVisual++); PanoramiXMaybeAddVisual(pVisual++);
root = malloc(sizeof(PanoramiXRes)); PanoramiXRes *root = calloc(1, sizeof(PanoramiXRes));
if (!root)
return;
root->type = XRT_WINDOW; root->type = XRT_WINDOW;
defmap = malloc(sizeof(PanoramiXRes)); PanoramiXRes *defmap = calloc(1, sizeof(PanoramiXRes));
if (!defmap) {
free(root);
return;
}
defmap->type = XRT_COLORMAP; defmap->type = XRT_COLORMAP;
saver = malloc(sizeof(PanoramiXRes)); PanoramiXRes *saver = calloc(1, sizeof(PanoramiXRes));
if (!saver) {
free(root);
free(defmap);
return;
}
saver->type = XRT_WINDOW; saver->type = XRT_WINDOW;
FOR_NSCREENS_BACKWARD(i) { FOR_NSCREENS_BACKWARD(i) {