From d60ebb06d1c6a5e97901acbea1ce1ae30cd4a375 Mon Sep 17 00:00:00 2001
From: Frank Praznik <[EMAIL REDACTED]>
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 79d0b6518aef..54fd53d641f8 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 {