From d60ebb06d1c6a5e97901acbea1ce1ae30cd4a375 Mon Sep 17 00:00:00 2001 From: Frank Praznik Date: Wed, 16 Aug 2023 13:46:14 -0400 Subject: [PATCH] mouse: Ensure that the dummy default cursor is removed from the cursor list In the case where a dummy cursor is created as the default cursor, make sure it is removed from the cursor list when freeing the default cursor. --- src/events/SDL_mouse.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/events/SDL_mouse.c b/src/events/SDL_mouse.c index 79d0b6518a..54fd53d641 100644 --- a/src/events/SDL_mouse.c +++ b/src/events/SDL_mouse.c @@ -233,12 +233,26 @@ void SDL_SetDefaultCursor(SDL_Cursor *cursor) if (mouse->def_cursor) { SDL_Cursor *default_cursor = mouse->def_cursor; + SDL_Cursor *prev, *curr; if (mouse->cur_cursor == mouse->def_cursor) { mouse->cur_cursor = NULL; } mouse->def_cursor = NULL; + for (prev = NULL, curr = mouse->cursors; curr; + prev = curr, curr = curr->next) { + if (curr == default_cursor) { + if (prev) { + prev->next = curr->next; + } else { + mouse->cursors = curr->next; + } + + break; + } + } + if (mouse->FreeCursor && default_cursor->driverdata) { mouse->FreeCursor(default_cursor); } else {