From 238a4b68197bce7c99d37cbefedde2a1b824a9b2 Mon Sep 17 00:00:00 2001 From: Ulrich Sibiller Date: Sat, 11 Jan 2020 19:55:02 +0100 Subject: Xext: Fix cursor reference counting hazard. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Backport of this xorg-xserver patch: commit 3083c5d0c4386cdd7083b7a83ac72fdad2f1e61e Author: Michel Dänzer Date: Mon Mar 22 18:01:17 2010 +0100 Xext: Fix cursor reference counting hazard. Make sure the reference count of the new cursor is increased before the old one is decreased, otherwise bad things will happen if they're one and the same and the reference count is 1 initially. Not sure this can actually happen here, but better safe than sorry. Signed-off-by: Michel Dänzer Reviewed-by: Roland Scheidegger Signed-off-by: Keith Packard --- nx-X11/programs/Xserver/Xext/saver.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'nx-X11/programs/Xserver/Xext/saver.c') diff --git a/nx-X11/programs/Xserver/Xext/saver.c b/nx-X11/programs/Xserver/Xext/saver.c index 65c43f6b4..a068b25ee 100644 --- a/nx-X11/programs/Xserver/Xext/saver.c +++ b/nx-X11/programs/Xserver/Xext/saver.c @@ -642,10 +642,10 @@ CreateSaverWindow (pScreen) FreeResource (pWin->drawable.id, RT_NONE); return FALSE; } + pAttr->pCursor->refcnt++; if (pWin->optional->cursor) FreeCursor (pWin->optional->cursor, (Cursor)0); pWin->optional->cursor = pAttr->pCursor; - pAttr->pCursor->refcnt++; pWin->cursorIsNone = FALSE; CheckWindowOptionalNeed (pWin); mask |= CWCursor; -- cgit v1.2.3 From ad90098f107832c9e975fb9780ea3dbecb4a0d56 Mon Sep 17 00:00:00 2001 From: Ulrich Sibiller Date: Sat, 11 Jan 2020 19:58:46 +0100 Subject: Xext: rename saver's EventType to SaverEventType. Backport of this xorg-xserver commit: commit cfd3443fe81685e91a53063dee58e24a5684dc29 Author: Peter Hutterer Date: Wed Jan 28 13:34:10 2009 +1000 Xext: rename saver's EventType to SaverEventType. Avoid namespace clashing with the internal events. Signed-off-by: Peter Hutterer --- nx-X11/programs/Xserver/Xext/saver.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'nx-X11/programs/Xserver/Xext/saver.c') diff --git a/nx-X11/programs/Xserver/Xext/saver.c b/nx-X11/programs/Xserver/Xext/saver.c index a068b25ee..671e31e20 100644 --- a/nx-X11/programs/Xserver/Xext/saver.c +++ b/nx-X11/programs/Xserver/Xext/saver.c @@ -148,7 +148,7 @@ static int ScreenSaverFreeSuspend( * entry from the per-screen queue. */ -static RESTYPE EventType; /* resource type for event masks */ +static RESTYPE SaverEventType; /* resource type for event masks */ typedef struct _ScreenSaverEvent *ScreenSaverEventPtr; @@ -256,7 +256,7 @@ ScreenSaverExtensionInit(void) ScreenPtr pScreen; AttrType = CreateNewResourceType(ScreenSaverFreeAttr); - EventType = CreateNewResourceType(ScreenSaverFreeEvents); + SaverEventType = CreateNewResourceType(ScreenSaverFreeEvents); SuspendType = CreateNewResourceType(ScreenSaverFreeSuspend); ScreenPrivateIndex = AllocateScreenPrivateIndex (); @@ -265,7 +265,7 @@ ScreenSaverExtensionInit(void) pScreen = screenInfo.screens[i]; SetScreenPrivate (pScreen, NULL); } - if (AttrType && EventType && SuspendType && ScreenPrivateIndex != -1 && + if (AttrType && SaverEventType && SuspendType && ScreenPrivateIndex != -1 && (extEntry = AddExtension(ScreenSaverName, ScreenSaverNumberEvents, 0, ProcScreenSaverDispatch, SProcScreenSaverDispatch, ScreenSaverResetProc, StandardMinorOpcode))) @@ -360,7 +360,7 @@ setEventMask (pScreen, client, mask) break; if (mask == 0) { - FreeResource (pEv->resource, EventType); + FreeResource (pEv->resource, SaverEventType); *pPrev = pEv->next; free (pEv); CheckScreenPrivate (pScreen); @@ -380,7 +380,7 @@ setEventMask (pScreen, client, mask) pEv->client = client; pEv->screen = pScreen; pEv->resource = FakeClientID (client->index); - if (!AddResource (pEv->resource, EventType, (void *) pEv)) + if (!AddResource (pEv->resource, SaverEventType, (void *) pEv)) return FALSE; } pEv->mask = mask; -- cgit v1.2.3