SDL: clipboard: Ensure SDL_ClearClipboardData clears data even when no data has been set

From c6b5c21aaf66dc8fb4214e7bebb1258084abfae6 Mon Sep 17 00:00:00 2001
From: Erik Soma <[EMAIL REDACTED]>
Date: Thu, 2 Jan 2025 09:53:30 -0500
Subject: [PATCH] clipboard: Ensure SDL_ClearClipboardData clears data even
 when no data has been set

---
 src/video/SDL_clipboard.c       |  5 -----
 test/testautomation_clipboard.c | 15 +++++++++++----
 2 files changed, 11 insertions(+), 9 deletions(-)

diff --git a/src/video/SDL_clipboard.c b/src/video/SDL_clipboard.c
index 2db87d885d447..105c2889e3d91 100644
--- a/src/video/SDL_clipboard.c
+++ b/src/video/SDL_clipboard.c
@@ -99,11 +99,6 @@ bool SDL_SetClipboardData(SDL_ClipboardDataCallback callback, SDL_ClipboardClean
         return SDL_SetError("Invalid parameters");
     }
 
-    if (!callback && !_this->clipboard_callback) {
-        // Nothing to do, don't modify the system clipboard
-        return true;
-    }
-
     SDL_CancelClipboardData(0);
 
     ++_this->clipboard_sequence;
diff --git a/test/testautomation_clipboard.c b/test/testautomation_clipboard.c
index b986ec9e66db1..3a70d3100cc83 100644
--- a/test/testautomation_clipboard.c
+++ b/test/testautomation_clipboard.c
@@ -108,6 +108,13 @@ static int SDLCALL clipboard_testClipboardDataFunctions(void *arg)
         result == true,
         "Validate SDL_ClearClipboardData result, expected true, got %i",
         result);
+    expected_text = "";
+    text = SDL_GetClipboardText();
+    SDLTest_AssertCheck(
+        text && SDL_strcmp(text, expected_text) == 0,
+        "Verify clipboard text, expected \"%s\", got \"%s\"",
+        expected_text, text);
+    SDL_free(text);
 
     /* Test clearing clipboard data when it's already clear */
     last_clipboard_update_count = clipboard_update_count;
@@ -117,8 +124,8 @@ static int SDLCALL clipboard_testClipboardDataFunctions(void *arg)
         "Validate SDL_ClearClipboardData result, expected true, got %i",
         result);
     SDLTest_AssertCheck(
-        clipboard_update_count == last_clipboard_update_count,
-        "Verify clipboard update unchanged, got %d",
+        clipboard_update_count != last_clipboard_update_count,
+        "Verify clipboard update count changed, got %d",
         clipboard_update_count - last_clipboard_update_count);
 
     /* Validate error handling */
@@ -430,8 +437,8 @@ static int SDLCALL clipboard_testClipboardTextFunctions(void *arg)
         "Verify SDL_HasClipboardText returned false, got %s",
         (boolResult) ? "true" : "false");
     SDLTest_AssertCheck(
-        clipboard_update_count == last_clipboard_update_count,
-        "Verify clipboard update unchanged, got %d",
+        clipboard_update_count == last_clipboard_update_count + 1,
+        "Verify clipboard update count incremented by 1, got %d",
         clipboard_update_count - last_clipboard_update_count);