Răsfoiți Sursa

Fixed crash if there is no controller mapping

Sam Lantinga 1 an în urmă
părinte
comite
a5a47d3bee
1 a modificat fișierele cu 6 adăugiri și 2 ștergeri
  1. 6 2
      test/gamepadutils.c

+ 6 - 2
test/gamepadutils.c

@@ -766,6 +766,10 @@ static SDL_bool GetButtonBindingString(SDL_GamepadButton button, char *mapping,
     char label[32];
     SDL_bool baxy_mapping = SDL_FALSE;
 
+    if (!mapping) {
+        return SDL_FALSE;
+    }
+
     SDL_snprintf(label, sizeof(label), ",%s:", SDL_GetGamepadStringForButton(button));
     if (GetBindingString(label, mapping, text, size)) {
         return SDL_TRUE;
@@ -2543,7 +2547,7 @@ static SDL_bool MappingHasKey(const char *mapping, const char *key)
     if (i < 0) {
         SDL_bool baxy_mapping = SDL_FALSE;
 
-        if (SDL_strstr(mapping, ",hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1") != NULL) {
+        if (mapping && SDL_strstr(mapping, ",hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1") != NULL) {
             baxy_mapping = SDL_TRUE;
         }
         i = FindMappingKey(&parts, GetLegacyKey(key, baxy_mapping));
@@ -2567,7 +2571,7 @@ static char *GetMappingValue(const char *mapping, const char *key)
     if (i < 0) {
         SDL_bool baxy_mapping = SDL_FALSE;
 
-        if (SDL_strstr(mapping, ",hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1") != NULL) {
+        if (mapping && SDL_strstr(mapping, ",hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1") != NULL) {
             baxy_mapping = SDL_TRUE;
         }
         i = FindMappingKey(&parts, GetLegacyKey(key, baxy_mapping));