From c124da43674faebe80b7ed6880b520dec0cb9cb6 Mon Sep 17 00:00:00 2001
From: Sam Lantinga <[EMAIL REDACTED]>
Date: Fri, 24 Apr 2026 07:33:37 -0700
Subject: [PATCH] Don't do name blacklisting if there's no name
---
src/joystick/SDL_gamepad.c | 39 +++++++++++++++++++-------------------
1 file changed, 20 insertions(+), 19 deletions(-)
diff --git a/src/joystick/SDL_gamepad.c b/src/joystick/SDL_gamepad.c
index 3d2171e73e12d..72d43a55526eb 100644
--- a/src/joystick/SDL_gamepad.c
+++ b/src/joystick/SDL_gamepad.c
@@ -3233,28 +3233,29 @@ bool SDL_IsGamepad(SDL_JoystickID instance_id)
*/
bool SDL_ShouldIgnoreGamepad(Uint16 vendor_id, Uint16 product_id, Uint16 version, const char *name)
{
- int i;
- for (i = 0; i < SDL_arraysize(SDL_gamepad_blacklist_words); i++) {
- const struct SDL_GamepadBlacklistWords *blacklist_word = &SDL_gamepad_blacklist_words[i];
+ if (name) {
+ for (int i = 0; i < SDL_arraysize(SDL_gamepad_blacklist_words); i++) {
+ const struct SDL_GamepadBlacklistWords *blacklist_word = &SDL_gamepad_blacklist_words[i];
- switch (blacklist_word->pos) {
- case GAMEPAD_BLACKLIST_BEGIN:
- if (SDL_startswith(name, blacklist_word->str)) {
- return true;
- }
- break;
+ switch (blacklist_word->pos) {
+ case GAMEPAD_BLACKLIST_BEGIN:
+ if (SDL_startswith(name, blacklist_word->str)) {
+ return true;
+ }
+ break;
- case GAMEPAD_BLACKLIST_END:
- if (SDL_endswith(name, blacklist_word->str)) {
- return true;
- }
- break;
+ case GAMEPAD_BLACKLIST_END:
+ if (SDL_endswith(name, blacklist_word->str)) {
+ return true;
+ }
+ break;
- case GAMEPAD_BLACKLIST_ANYWHERE:
- if (SDL_strstr(name, blacklist_word->str) != NULL) {
- return true;
- }
- break;
+ case GAMEPAD_BLACKLIST_ANYWHERE:
+ if (SDL_strstr(name, blacklist_word->str) != NULL) {
+ return true;
+ }
+ break;
+ }
}
}