diff --git a/libvncserver/cursor.c b/libvncserver/cursor.c index 8e2789b..3a01e64 100644 --- a/libvncserver/cursor.c +++ b/libvncserver/cursor.c @@ -616,14 +616,15 @@ void rfbSetCursor(rfbScreenInfoPtr rfbScreen,rfbCursorPtr c) LOCK(rfbScreen->cursorMutex); - if(rfbScreen->cursor && rfbScreen->cursor->cleanup) { + if(rfbScreen->cursor) { iterator=rfbGetClientIterator(rfbScreen); while((cl=rfbClientIteratorNext(iterator))) if(!cl->enableCursorShapeUpdates) rfbRedrawAfterHideCursor(cl); rfbReleaseClientIterator(iterator); - rfbFreeCursor(rfbScreen->cursor); + if(rfbScreen->cursor->cleanup) + rfbFreeCursor(rfbScreen->cursor); } rfbScreen->cursor = c;