Osk: Prevent adding highlighted char past limit.

The display would correctly show the number of characters allowed, but you
could still end up going one past.  This caused glitches in some games,
see #9821.
This commit is contained in:
Unknown W. Brackets 2020-03-09 06:40:30 -07:00
parent f648a82df9
commit bc07a0529c

View file

@ -658,7 +658,7 @@ std::wstring PSPOskDialog::CombinationString(bool isInput)
string += inputChars[i];
}
if (string.size() <= FieldMaxLength())
if (string.size() < FieldMaxLength())
{
string += oskKeys[currentKeyboard][selectedRow][selectedCol];
}
@ -870,7 +870,7 @@ int PSPOskDialog::NativeKeyboard() {
// Only write the bytes of the output and the null terminator, don't write the rest.
for (size_t i = 0; i < end; ++i) {
u16 value = 0;
if (i < FieldMaxLength())
if (i < FieldMaxLength() && i < inputChars.size())
value = inputChars[i];
outText[i] = value;
}
@ -1070,7 +1070,7 @@ int PSPOskDialog::Update(int animSpeed) {
for (size_t i = 0; i < end; ++i)
{
u16 value = 0;
if (i < inputChars.size())
if (i < FieldMaxLength() && i < inputChars.size())
value = inputChars[i];
outText[i] = value;
}