mirror of
https://github.com/X11Libre/xserver.git
synced 2026-03-24 01:34:11 +00:00
dbe: fix screen cleanup
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:
committed by
Enrico Weigelt
parent
e4836d4e0f
commit
c998f14c76
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user