diff --git a/dix/gc.c b/dix/gc.c index 014c6d0a7..ecaee32fb 100644 --- a/dix/gc.c +++ b/dix/gc.c @@ -821,13 +821,14 @@ CreateScratchGC(ScreenPtr pScreen, unsigned depth) } void -FreeGCperDepth(int screenNum) +FreeGCperDepth(ScreenPtr pScreen) { int i; - ScreenPtr pScreen; GCPtr *ppGC; - pScreen = screenInfo.screens[screenNum]; + if (!pScreen) + return; + ppGC = pScreen->GCperDepth; for (i = 0; i <= pScreen->numDepths; i++) { diff --git a/dix/gc_priv.h b/dix/gc_priv.h index 18d5fefbe..52b6f22a4 100644 --- a/dix/gc_priv.h +++ b/dix/gc_priv.h @@ -22,7 +22,7 @@ int CopyGC(GCPtr pgcSrc, GCPtr pgcDst, BITS32 mask); int FreeGC(void *pGC, XID gid); -void FreeGCperDepth(int screenNum); +void FreeGCperDepth(ScreenPtr pScreen); Bool CreateGCperDepth(int screenNum); diff --git a/dix/main.c b/dix/main.c index 0c57ba605..8b953dbf3 100644 --- a/dix/main.c +++ b/dix/main.c @@ -327,7 +327,7 @@ dix_main(int argc, char *argv[], char *envp[]) } for (i = screenInfo.numScreens - 1; i >= 0; i--) { - FreeGCperDepth(i); + FreeGCperDepth(screenInfo.screens[i]); FreeDefaultStipple(i); dixFreeScreenSpecificPrivates(screenInfo.screens[i]); (*screenInfo.screens[i]->CloseScreen) (screenInfo.screens[i]);