Corrected bug on Raspberry Pi with strcat()

This commit is contained in:
raysan5 2016-07-06 20:02:15 +02:00
parent 09cc27ca7a
commit 8fd4507847

View File

@ -782,12 +782,15 @@ static SpriteFont LoadBMFont(const char *fileName)
char *texPath = NULL;
char *lastSlash = NULL;
lastSlash = strrchr(fileName, '/'); // you need escape character
texPath = malloc(strlen(fileName) - strlen(lastSlash) + 1 + strlen(texFileName) + 1);
memcpy(texPath, fileName, strlen(fileName) - strlen(lastSlash));
strcat(texPath, "/");
strcat(texPath, texFileName);
strcat(texPath, "\0");
lastSlash = strrchr(fileName, '/');
// NOTE: We need some extra space to avoid memory corruption on next allocations!
texPath = malloc(strlen(fileName) - strlen(lastSlash) + strlen(texFileName) + 4);
// NOTE: strcat() and strncat() required a '\0' terminated string to work!
*texPath = '\0';
strncat(texPath, fileName, strlen(fileName) - strlen(lastSlash) + 1);
strncat(texPath, texFileName, strlen(texFileName));
TraceLog(DEBUG, "[%s] Font texture loading path: %s", fileName, texPath);
@ -828,7 +831,7 @@ static SpriteFont LoadBMFont(const char *fileName)
else if (unorderedChars) TraceLog(WARNING, "BMFont not supported: unordered chars data, falling back to default font");
// NOTE: Font data could be not ordered by charId: 32,33,34,35... raylib does not support unordered BMFonts
if ((firstChar != FONT_FIRST_CHAR) || (unorderedChars))
if ((firstChar != FONT_FIRST_CHAR) || (unorderedChars) || (font.texture.id == 0))
{
UnloadSpriteFont(font);
font = GetDefaultFont();