From 4e7c38ac43a23a96aec7f96ed4fef2b0cf12e981 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Yui=20Kinomoto=20/=20=E3=81=8D=E3=81=AE=E3=82=82=E3=81=A8?= =?UTF-8?q?=20=E7=B5=90=E8=A1=A3?= Date: Fri, 13 Feb 2026 01:04:22 +0900 Subject: [PATCH] fix SDL SetGamepadMappings (#5548) --- src/platforms/rcore_desktop_sdl.c | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/src/platforms/rcore_desktop_sdl.c b/src/platforms/rcore_desktop_sdl.c index 66a917da2..ae44728c4 100644 --- a/src/platforms/rcore_desktop_sdl.c +++ b/src/platforms/rcore_desktop_sdl.c @@ -1287,7 +1287,25 @@ void OpenURL(const char *url) // Set internal gamepad mappings int SetGamepadMappings(const char *mappings) { - return SDL_GameControllerAddMapping(mappings); + const int mappingsLength = strlen(mappings); + char *buffer = (char *)RL_CALLOC(mappingsLength + 1, sizeof(char)); + memcpy(buffer, mappings, mappingsLength); + char *p = strtok(buffer, "\n"); + bool succeed = true; + + while (p != NULL) + { + if (SDL_GameControllerAddMapping(p) == -1) + { + succeed = false; + } + p = strtok(NULL, "\n"); + } + + RL_FREE(buffer); + + // To make return value is consistent with the GLFW version. + return (succeed)? 1 : 0; } // Set gamepad vibration