Remove two potential out of bounds crashes in GuiTextBoxMulti (#211)
This commit is contained in:
parent
1b18e43768
commit
798da1b522
@ -2319,9 +2319,11 @@ bool GuiTextBoxMulti(Rectangle bounds, char *text, int textSize, bool editMode)
|
|||||||
// We get an Unicode codepoint
|
// We get an Unicode codepoint
|
||||||
int codepoint = GetCharPressed();
|
int codepoint = GetCharPressed();
|
||||||
int textLength = (int)strlen(text); // Length in bytes (UTF-8 string)
|
int textLength = (int)strlen(text); // Length in bytes (UTF-8 string)
|
||||||
|
int byteSize = 0;
|
||||||
|
const char *textUTF8 = CodepointToUTF8(key, &byteSize)
|
||||||
|
|
||||||
// Introduce characters
|
// Introduce characters
|
||||||
if (textLength < (textSize - 1))
|
if ((textLength + byteSize) < textSize)
|
||||||
{
|
{
|
||||||
if (IsKeyPressed(KEY_ENTER))
|
if (IsKeyPressed(KEY_ENTER))
|
||||||
{
|
{
|
||||||
@ -2353,7 +2355,7 @@ bool GuiTextBoxMulti(Rectangle bounds, char *text, int textSize, bool editMode)
|
|||||||
{
|
{
|
||||||
// Remove latest UTF-8 unicode character introduced (n bytes)
|
// Remove latest UTF-8 unicode character introduced (n bytes)
|
||||||
int charUTF8Length = 0;
|
int charUTF8Length = 0;
|
||||||
while (((unsigned char)text[textLength - 1 - charUTF8Length] & 0b01000000) == 0) charUTF8Length++;
|
while (charUTF8Length < textLength && ((unsigned char)text[textLength - 1 - charUTF8Length] & 0b01000000) == 0) charUTF8Length++;
|
||||||
|
|
||||||
textLength -= (charUTF8Length + 1);
|
textLength -= (charUTF8Length + 1);
|
||||||
text[textLength] = '\0';
|
text[textLength] = '\0';
|
||||||
|
Loading…
x
Reference in New Issue
Block a user