From f237658af8a81c4e0b6fd01a39a13e56d0a07850 Mon Sep 17 00:00:00 2001 From: "Enrico Weigelt, metux IT consult" Date: Thu, 13 Mar 2025 13:13:47 +0100 Subject: [PATCH] (!1905) dix: let FreeGCperDepth() operate on ScreenPtr and NULL protect it Instead of retrieving the screen index from ScreenRec and passing this, so the ScreenRec is looked up again, just pass in the ScreenPtr that already have anyways. Signed-off-by: Enrico Weigelt, metux IT consult --- dix/gc.c | 7 ++++--- dix/gc_priv.h | 2 +- dix/main.c | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/dix/gc.c b/dix/gc.c index 3f0711906..f5cfecdab 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 64a93cbc8..fb7e07a8a 100644 --- a/dix/main.c +++ b/dix/main.c @@ -334,7 +334,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]);