diff --git a/hw/xfree86/ramdac/xf86CursorRD.c b/hw/xfree86/ramdac/xf86CursorRD.c index 9aa3de97b..c8362d169 100644 --- a/hw/xfree86/ramdac/xf86CursorRD.c +++ b/hw/xfree86/ramdac/xf86CursorRD.c @@ -334,6 +334,9 @@ xf86CursorSetCursor(DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCurs, ScreenPriv->HotY = cursor->bits->yhot; if (!infoPtr->pScrn->vtSema) { + cursor = RefCursor(cursor); + if (ScreenPriv->SavedCursor) + FreeCursor(ScreenPriv->SavedCursor, None); ScreenPriv->SavedCursor = cursor; return; }