From 706e7f904329a3f47324bc4ae8e2631d9a0f562e Mon Sep 17 00:00:00 2001
From: William Horvath <[EMAIL REDACTED]>
Date: Fri, 20 Mar 2026 06:19:48 -0700
Subject: [PATCH] windowsrawinput: Fix incorrect INVALID_HANDLE_VALUE checks.
CreateEvent/CreateThread return NULL on failure.
---
src/video/windows/SDL_windowsrawinput.c | 26 ++++++++++---------------
1 file changed, 10 insertions(+), 16 deletions(-)
diff --git a/src/video/windows/SDL_windowsrawinput.c b/src/video/windows/SDL_windowsrawinput.c
index 53b06389cc177..9bbb07d861fc7 100644
--- a/src/video/windows/SDL_windowsrawinput.c
+++ b/src/video/windows/SDL_windowsrawinput.c
@@ -46,13 +46,7 @@ typedef struct
HANDLE thread;
} RawInputThreadData;
-static RawInputThreadData thread_data = {
- false,
- 0,
- INVALID_HANDLE_VALUE,
- INVALID_HANDLE_VALUE,
- INVALID_HANDLE_VALUE
-};
+static RawInputThreadData thread_data = { 0 };
static DWORD WINAPI WIN_RawInputThread(LPVOID param)
{
@@ -140,22 +134,22 @@ static DWORD WINAPI WIN_RawInputThread(LPVOID param)
static void CleanupRawInputThreadData(RawInputThreadData *data)
{
- if (data->thread != INVALID_HANDLE_VALUE) {
+ if (data->thread) {
data->done = true;
SetEvent(data->signal_event);
WaitForSingleObject(data->thread, 3000);
CloseHandle(data->thread);
- data->thread = INVALID_HANDLE_VALUE;
+ data->thread = NULL;
}
- if (data->ready_event != INVALID_HANDLE_VALUE) {
+ if (data->ready_event) {
CloseHandle(data->ready_event);
- data->ready_event = INVALID_HANDLE_VALUE;
+ data->ready_event = NULL;
}
- if (data->signal_event != INVALID_HANDLE_VALUE) {
+ if (data->signal_event) {
CloseHandle(data->signal_event);
- data->signal_event = INVALID_HANDLE_VALUE;
+ data->signal_event = NULL;
}
}
@@ -170,20 +164,20 @@ bool WIN_SetRawInputEnabled(SDL_VideoDevice *_this, Uint32 flags)
thread_data.flags = flags;
thread_data.ready_event = CreateEvent(NULL, FALSE, FALSE, NULL);
- if (thread_data.ready_event == INVALID_HANDLE_VALUE) {
+ if (!thread_data.ready_event) {
WIN_SetError("CreateEvent");
goto done;
}
thread_data.done = false;
thread_data.signal_event = CreateEvent(NULL, FALSE, FALSE, NULL);
- if (thread_data.signal_event == INVALID_HANDLE_VALUE) {
+ if (!thread_data.signal_event) {
WIN_SetError("CreateEvent");
goto done;
}
thread_data.thread = CreateThread(NULL, 0, WIN_RawInputThread, &thread_data, 0, NULL);
- if (thread_data.thread == INVALID_HANDLE_VALUE) {
+ if (!thread_data.thread) {
WIN_SetError("CreateThread");
goto done;
}