Xext: Fix cursor reference counting hazard.

Michel Dänzer michel at daenzer.net
Fri Mar 12 07:29:02 PST 2010

From: Michel Dänzer <daenzer at vmware.com>

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 <daenzer at vmware.com>
 Xext/saver.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/Xext/saver.c b/Xext/saver.c
index 2549e8a..aa2e614 100644
--- a/Xext/saver.c
+++ b/Xext/saver.c
@@ -620,10 +620,10 @@ CreateSaverWindow (ScreenPtr 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;

More information about the xorg-devel mailing list