From 4ea64fee9feefca1b132127e557c4e37cb774b1a Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Fri, 23 Sep 2022 15:28:32 -0700 Subject: [PATCH] Fixed manufacturer/product name deduplication for the Razer Raiju Tournament Edition controller --- src/joystick/SDL_joystick.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/joystick/SDL_joystick.c b/src/joystick/SDL_joystick.c index 8afd772ecb..dc890266c8 100644 --- a/src/joystick/SDL_joystick.c +++ b/src/joystick/SDL_joystick.c @@ -1972,14 +1972,20 @@ SDL_CreateJoystickName(Uint16 vendor, Uint16 product, const char *vendor_name, c } } - /* Remove duplicate manufacturer or product in the name */ + /* Remove duplicate manufacturer or product in the name + * e.g. Razer Razer Raiju Tournament Edition Wired + */ for (i = 1; i < (len - 1); ++i) { int matchlen = PrefixMatch(name, &name[i]); - if (matchlen > 0 && name[matchlen-1] == ' ') { - SDL_memmove(name, name+matchlen, len-matchlen+1); - break; - } else if (matchlen > 0 && name[matchlen] == ' ') { - SDL_memmove(name, name+matchlen+1, len-matchlen); + while (matchlen > 0) { + if (name[matchlen] == ' ') { + SDL_memmove(name, name + matchlen + 1, len - matchlen); + break; + } + --matchlen; + } + if (matchlen > 0) { + /* We matched the manufacturer's name and removed it */ break; } }