dbe: fix screen cleanup
Some checks are pending
Build X servers / xserver-build-ubuntu (push) Waiting to run
Build X servers / drivers-build-ubuntu (push) Waiting to run
Build X servers / xserver-build-macos (push) Waiting to run
Build X servers / Release pushed tag (push) Waiting to run

The 2nd loop is supposed to free the privates and also clear the pointer
to them. But it instead of clearing the walk'ed pointer, it only clears
the one in the last screen left from the upper loop.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
This commit is contained in:
Enrico Weigelt, metux IT consult 2025-08-11 11:58:10 +02:00 committed by Enrico Weigelt
commit c998f14c76

View file

@ -1270,7 +1270,6 @@ DbeExtensionInit(void)
{
ExtensionEntry *extEntry;
register int i, j;
ScreenPtr pScreen = NULL;
DbeScreenPrivPtr pDbeScreenPriv;
int nStubbedScreens = 0;
Bool ddxInitSuccess;
@ -1303,7 +1302,7 @@ DbeExtensionInit(void)
* interface.
*/
pScreen = screenInfo.screens[i];
ScreenPtr pScreen = screenInfo.screens[i];
if (!(pDbeScreenPriv = calloc(1, sizeof(DbeScreenPrivRec)))) {
/* If we can not alloc a window or screen private,
@ -1358,8 +1357,8 @@ DbeExtensionInit(void)
/* All screens stubbed. Clean up and return. */
for (i = 0; i < screenInfo.numScreens; i++) {
free(dixLookupPrivate(&screenInfo.screens[i]->devPrivates,
dbeScreenPrivKey));
ScreenPtr pScreen = screenInfo.screens[i];
free(dixLookupPrivate(&pScreen->devPrivates, dbeScreenPrivKey));
dixSetPrivate(&pScreen->devPrivates, dbeScreenPrivKey, NULL);
}
return;