Fix love.joystick.setGamepadMapping breaking the mapping string when replacing an existing binding.

issue #1936.
This commit is contained in:
Sasha Szpakowski
2023-06-17 22:16:18 -03:00
parent f06d6c6281
commit df7a55911d
+8 -3
View File
@@ -259,12 +259,17 @@ bool JoystickModule::setGamepadMapping(const std::string &guid, Joystick::Gamepa
if (endpos == std::string::npos)
endpos = mapstr.length() - 1;
mapstr.replace(findpos + 1, endpos - findpos + 1, insertstr);
mapstr.replace(findpos + 1, endpos - findpos, insertstr);
}
else
{
// Just append to the end if we don't need to replace anything.
mapstr += insertstr;
// Just append to the end (or before the platform section if that exists),
// if we don't need to replace anything.
size_t platformpos = mapstr.find("platform:");
if (platformpos != std::string::npos)
mapstr.insert(platformpos, insertstr);
else
mapstr += insertstr;
}
// 1 == added, 0 == updated, -1 == error.